NSDateFormatter无法格式化日期

时间:2013-10-27 16:31:18

标签: ios objective-c nsdateformatter

我已经尝试过并尝试过并再次尝试过但我无法格式化

日期是:     “2013-08-08T11:10:09-07:00”

我尝试过使用“yyyy” - “MM” - “DD'T'HH”:“mm”:“ssZ”以及一系列不同的排列,但无济于事。我想也许服务器发送的时区格式不正确。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy'-'MM'-'DD'T'HH':'mm':'ssZ"];

return [dateFormatter dateFromString:[dictionary objectForKey:key]];

任何线索?

提前致谢

1 个答案:

答案 0 :(得分:2)

对于您正在使用的非本地化ISO偏移量,例如-07:00 - 您需要在格式中使用5个Z个字符。因此,对于给定的源数据,正确的格式字符串将是:

yyyy-MM-dd'T'HH:mm:ssZZZZZ

虽然目前使用的技术标准不需要转发日期和时间分隔符,正如杰夫在评论中提到的那样,这样做可能不是一个坏主意,特别是如果您的源日期来自服务器或其他东西。有关更改特定于语言环境的日期和时间分隔符的替换(如字母)的讨论。从技术角度来说逃避它们也没有什么害处,只是更难以理解:

yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZZZ

有关更多信息,当前日期格式化程序基于Unicode技术规范#35。可以在http://www.unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns

找到#35的日期和时间模式规范