6

我有几个日期字符串需要转换为 NSDates。我的解析代码如下:

NSString *s = [pair objectForKey:@"nodeContent"];
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZ"];
self.date = [f dateFromString:s];

上面的代码在我们测试过的所有设备和模拟器中都能正常工作。奇怪的是,当上述代码在任何运行 iOS 6.1 或 7.0.x 的 iPhone 5 上运行时,该行self.date = [f dateFromString:s];每次都返回 nil。

我已经检查并且字符串s存在并且在与正确解析日期的设备并排比较时包含相同的字符。

这是一个示例日期字符串:`2013-10-31T21:50:00-06:00'

我在这里错过了什么吗?

4

1 回答 1

13

这是因为您没有将日期格式化程序的语言环境设置为特殊en_US_POSIX语言环境。您的 iPhone 5 很可能有不同的 24 小时设置。

每当您解析固定格式的字符串时,您都需要设置特殊的语言环境。

于 2013-10-24T23:23:05.430 回答