从存储在32/64位的NSNumber中的unix时间戳创建NSDate

时间:2014-09-25 16:03:29

标签: ios objective-c 64-bit nsdate

我有以下代码:

NSNumber *number = @(1388534400000);

NSDate *date = [NSDate dateWithTimeIntervalSince1970:[number unsignedIntegerValue]];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterLongStyle];

[self.label setText:[dateFormatter stringFromDate:date]];

它在我的iPhone 5上写2009. december 4.,在我的iPhone 5s上写45970. november 27.。我想原因是,在32位体系结构上,unix时间戳以秒为单位处理,但在64位时,它们需要以毫秒为单位。如何检测架构?在64位架构上除以1000是解决这个问题的好方法吗?有没有更优雅的方法来处理这个?

1 个答案:

答案 0 :(得分:1)

这不是64位问题。

NSTimeInterval定义为double,因此请使用:

NSNumber *number = @(1388534400.000);
NSDate *date = [NSDate dateWithTimeIntervalSince1970:[number doubleValue]];