8

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

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

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

4

3 回答 3

31

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

于 2009-05-28T23:34:51.507 回答
5

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

NSString *nowTimestamp = [NSString stringWithFormat:@"%f", 
                         [[NSDate date] timeIntervalSince1970]];
于 2009-05-28T23:39:33.200 回答
1

你确定结果NSDate是十进制整数吗?文档说它是双重的。你可以试试铸造。

此外,有时您会得到一个指针值而不是实际值,如果某些东西NSNumber在幕后,您可能需要使用intValue, 或doubleValue获取地址处的实际内容。

于 2009-05-28T23:23:59.720 回答