硬件依赖的NSDateFormatter dateFromString:bug(返回nil)

问题描述:

我有几个日期字符串,我需要转换为NSDates。 我的解析代码如下:硬件依赖的NSDateFormatter dateFromString:bug(返回nil)

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'

我在这里失去了一些东西?

+0

量化*任何*。这可能是地区的问题吗? –

+0

可能重复[什么是处理NSDateFormatter语言环境“功能”的最佳方法?](http://*.com/questions/6613110/what-is-the-best-way-to-deal-with- -sdateformatter-locale-feature) –

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

无论何时解析固定格式字符串,都需要设置特殊区域设置。

+3

谢谢。我添加了一行'[f setLocale:[NSLocale localeWithLocaleIdentifier:@“en_US_POSIX”]];'现在它就起作用了。 – user2917941