我有以下代码:
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是解决这个问题的好方法吗?有没有更优雅的方法来处理这个?
答案 0 :(得分:1)
这不是64位问题。
NSTimeInterval
定义为double
,因此请使用:
NSNumber *number = @(1388534400.000);
NSDate *date = [NSDate dateWithTimeIntervalSince1970:[number doubleValue]];