timeIntervalSince1970的奇怪行为

时间:2009-05-28 23:09:28

标签: iphone objective-c timestamp nsdate

我看到一个奇怪的行为,试图从目标C中的纪元获得秒数。这个:

NSString *nowTimestamp = [NSString stringWithFormat:@"%d", 
                             [[NSDate date] timeIntervalSince1970]];

输出15907296,当前时间戳应为1243555623(05/28/2009 @美国东部时间下午7:08)。 iPhone上的系统时间是正确的。我无法弄清楚我的生活中我做错了什么。有什么建议吗?

3 个答案:

答案 0 :(得分:31)

timeIntervalSince1970返回一个NSTimeInterval,它是double的typedef; %d不是打印double的正确格式化程序(你想要%f)。

答案 1 :(得分:5)

由于[[NSDate date] timeIntervalSince1970];的回报是双倍的,你可以试试这个:

NSString *nowTimestamp = [NSString stringWithFormat:@"%f", 
                         [[NSDate date] timeIntervalSince1970]];

答案 2 :(得分:1)

您确定NSDate的结果是十进制int吗?文件说它是双重的。你可以尝试施法。

此外,有时你会得到一个指针值而不是实际值,如果某些内容是NSNumber,你可能需要使用intValuedoubleValue来获取该地址的实际内容。