NSDateFormatter无法识别时区

时间:2013-07-15 06:45:27

标签: ios objective-c cocoa-touch nsdate nsdateformatter

我有这个日期:

2013-07-15T06:07:53-04:00

我使用NSDateFormatter将其转换为NSDate:

    [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];

这有效,但无法识别时区。它返回:

2013-07-15 10:07:53 +0000

我做错了什么?

由于

4 个答案:

答案 0 :(得分:2)

日志输出正确。 NSLog NSDate将始终以UTC显示日期/时间(请参阅输出的+0000而不是-04:00)。无论日历和时区如何,NSDate个对象都代表特定的时刻。您将此“时刻”与格式化程序(设置了时区)结合使用,以便将“时刻”格式化为特定于语言环境的时间。

如果您想查看使用您自己的时区记录输出:

// pick a different timezone if necessary
[formatter setTimeZone:[NSTimeZone localTimeZone]];

NSLog(@"%@", [formatter stringFromDate:momentInTime];

答案 1 :(得分:0)

请改为尝试:

[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];

答案 2 :(得分:0)

不是字符串末尾的“-04:00”告诉NSDateFormatter这个日期是GMT-4,因此,它只是将它转换为GMT?

如果没有,请提供NSDateFormatter的完整初始化。

答案 3 :(得分:0)

此处有更多信息

iPhone NSDateFormatter Timezone Conversion

5 ZZZZZ - 这是我用GMT到BST的一些样本写的一个类别

https://github.com/clearbrian/NSDateFormatter_ISO_8601