在模拟器和iPhone设备上使用dateWithTimeIntervalSince1970创建NSDates时,我遇到了一个奇怪的问题。我只是将ISO8601时间戳从NSDate转换为毫秒,然后再转换回NSDate。
NSDateFormatter *iso8601Formatter = [[NSDateFormatter alloc] init];
iso8601Formatter.dateFormat = TSMISO8601FormatString; // "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
NSDate startDate = [iso8601Formatter dateFromString: @"2014-03-19T09:46:00-06:00"];
long startTimeMilliseconds = [startDate timeIntervalSince1970] * 1000;
startDate = [NSDate dateWithTimeIntervalSince1970:(startTimeMilliseconds / 1000)];
当我在模拟器上运行时,我得到相同的日期,但是当我在iPhone上运行它时,我会回来。我真的很困惑为什么我要回到一个截然不同的日子
1970-01-25 20:31:23 +0000 // iPhone device results
我已经检查过以确保我的时区,日期和时间格式都相同,只是为了确保这不是问题。两者都在运行iOS 7.1。我还试图为NSDateFormatter设置语言环境和时区,但没有成功。
任何帮助将不胜感激
答案 0 :(得分:2)
此:
long startTimeMilliseconds = [startDate timeIntervalSince1970] * 1000;
应该是:
double startTimeMilliseconds = [startDate timeIntervalSince1970] * 1000;
这就是为什么,
LONG_MAX
可以找到最大长度,它会记录:
2147483647
您当前的时间间隔是:
1395243960000.000000
很长时间不够大。