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

我有几个datestring,我需要转换为NSDates。 我的parsing代码如下:

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

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

我已经检查过,并且strings存在,并且与正确parsingdate的设备并排比较时包含相同的字符。

这是一个datestring示例:`2013-10-31T21:50:00-06:00'

我在这里错过了什么?

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

无论何时parsing固定格式的string,都需要设置特殊的语言环境。