OGeek|极客世界-中国程序员成长平台

标题: ios - 长日期(UNIX 日期)问题 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 15:22
标题: ios - 长日期(UNIX 日期)问题

问题如下: 应用程序的快速详细信息:根据日期对数据进行排序(升序)。

来自 Web 服务的 UNIX 日期/长日期,格式为 JSON(13 位)。解析长日期时,我得到无效的日期值。

长日期:1428498595000 转换日期:Sun, 26 Apr 47237 13:16:40(解析后) [注意年份]

使用在线转换器时(示例):http://www.onlineconversion.com/unix_time.htm ,复制相同的输出。 我的目的是让日期按升序排序,但不幸的是,由于年份显示不相关,因此无法进行排序。

长日期 1428498595(在网站上手动删除三个零后进行测试):Wed, 08 Apr 2015 13:09:55 GMT(这是需要显示的正确日期)

谁能帮我理解可以做些什么,以便我们可以手动删除最后三个零? [将解析后的数据存储在SQLite中,然后在UITableView中生成存储的数据]

这是在 AppDelegate 中

+(NSString * )convertUnixTime_to_SytemTime NSTimeInterval )timeInterval
{
    NSDate * convertedDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.dateFormat = @"YYYY-MM-DD";
    NSTimeZone *localTime = [NSTimeZone systemTimeZone];
    [dateFormatter setTimeZone:localTime];
    NSString *timeStamp = [dateFormatter stringFromDate:convertedDate];
    return timeStamp;
}

这是在代码中

data.News_LastModifiedDate = [AppDelegate convertUnixTime_to_SytemTime:[[subcomponents objectAtIndex:2] doubleValue]];

非常感谢。



Best Answer-推荐答案


日期/时间是自 UNIX 纪元以来的毫秒数,而不是秒数。您可以除以 1000.0 以保留小数秒(如果它们出现):

NSTimeInterval seconds = (NSTimeInterval)1428498595000 / 1000.0;

编辑。要解决您问题的其他方面:

Storing the parsed data in SQLite and then producing the stored data in UITableView

按原样存储;作为 64 位 int.

+(NSString * )convertUnixTime_to_SytemTime NSTimeInterval )timeInterval

此方法不会将 UNIX 时间转换为系统时间;它将日期格式化为字符串(从外观上看是错误的)。忘记它,只使用第一行代码:

NSDate * convertedDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];

其中 timeInterval 是上面转换为秒的原始数字。您希望将日期作为字符串的唯一时间是在演示期间,而不是在处理期间。

关于ios - 长日期(UNIX 日期)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30530697/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4