【问题标题】:Inconsistancey between iphone device and simulator when creating NSDate创建NSDate时iphone设备和模拟器之间的不一致
【发布时间】: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 设置区域设置和时区,但没有成功。

任何帮助将不胜感激

【问题讨论】:

    标签: iphone nsdate ios7.1


    【解决方案1】:

    这个:

    long startTimeMilliseconds = [startDate timeIntervalSince1970] * 1000;
    

    应该是:

    double startTimeMilliseconds = [startDate timeIntervalSince1970] * 1000;
    

    这就是为什么,

    可以使用LONG_MAX 找到最大长度,它会记录:

    2147483647

    您当前的时间间隔是:

    1395243960000.000000

    长得不够大。

    【讨论】:

    • 我很困惑为什么这会有所不同?希望对此有所了解。
    猜你喜欢
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    相关资源
    最近更新 更多