【发布时间】:2014-03-19 18:16:21
【问题描述】:
在模拟器和 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 设置区域设置和时区,但没有成功。
任何帮助将不胜感激
【问题讨论】: