我有一个如下所示的日期字符串:
1391640679661
当我使用此代码时:
NSString *seconds = @"1391640679661";
NSDate *date = [NSDate dateWithTimeIntervalSince1970:[seconds doubleValue]];
我最终得到了这个:
46069-05-03 07:27:41 +0000
那么这里发生了什么?这是我不考虑的特定日期格式吗?或者我做错了什么?
答案 0 :(得分:2)
Apple自己的api将根据您的需要为您完成所有艰苦的工作。
如果您想获得单独的组件,您可以采用以下方法。
NSTimeInterval theTimeInterval = 1391640679661;
// Get the system calendar
NSCalendar *sysCalendar = [NSCalendar currentCalendar];
// Create the NSDates
NSDate *date1 = [[NSDate alloc] init];
NSDate *date2 = [[NSDate alloc] initWithTimeInterval:theTimeInterval sinceDate:date1];
// Get conversion to months, days, hours, minutes
unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit;
NSDateComponents *conversionInfo = [sysCalendar components:unitFlags fromDate:date1 toDate:date2 options:0];
NSLog(@"Conversion: %dmin %dhours %ddays %dmoths",[conversionInfo minute], [conversionInfo hour], [conversionInfo day], [conversionInfo month]);
答案 1 :(得分:1)
要将时间戳字符串转换为NSDate,您需要将timestamp double值分割为1000,然后调用dateWithTimeIntervalSince1970:
NSString *timestamp = @"1391640679661";
double seconds = [timestamp doubleValue]/1000.0;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:seconds];
结果是:
2014-02-05 22:51:19 +0000