我有这个日期:
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
我究竟做错了什么?
谢谢
我有这个日期:
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
我究竟做错了什么?
谢谢
日志输出是正确的。NSLog
ging anNSDate
将始终以 UTC 显示该日期/时间(查看您的输出如何+0000
代替-04:00
)。NSDate
无论日历和时区如何,对象都代表一个特定的时刻。您可以将此“时刻”与格式化程序(设置时区)结合使用,以便将该“时刻”格式化为特定于语言环境的时间。
如果您想使用自己的时区查看日志输出:
// pick a different timezone if necessary
[formatter setTimeZone:[NSTimeZone localTimeZone]];
NSLog(@"%@", [formatter stringFromDate:momentInTime];
字符串末尾的“-04:00”不是告诉 NSDateFormatter 这个日期是 GMT-4 ,因此它只是将其转换为 GMT 吗?
如果没有,请提供您的 NSDateFormatter 的完整初始化。
试试这个:
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
更多信息在这里
5 ZZZZZ - 这是我写的一个类别,其中包含 GMT 到 BST 的一些样本