问题如下: 该应用程序的快速详细信息:根据日期对数据进行排序(升序)。
来自 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]];
提前致谢。
最佳答案
日期/时间以 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/