1

我有这个日期:

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

4 回答 4

2

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

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

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

NSLog(@"%@", [formatter stringFromDate:momentInTime];
于 2013-07-15T06:57:01.663 回答
0

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

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

于 2013-07-15T06:51:37.567 回答
0

试试这个:

[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
于 2013-07-15T06:50:08.003 回答
0

更多信息在这里

iPhone NSDateFormatter 时区转换

5 ZZZZZ - 这是我写的一个类别,其中包含 GMT 到 BST 的一些样本

https://github.com/clearbrian/NSDateFormatter_ISO_8601

于 2014-03-04T13:41:00.580 回答