Hardware-dependent NSDateFormatter dateFromString: bug (returns nil)

余生长醉 提交于 2019-11-26 11:35:53

问题


I have several date strings that I need to convert to NSDates. My parsing code is the following:

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

The above code works fine in all the devices and simulators we\'ve tested. The strange thing is that when the above code runs on any iPhone 5 running iOS 6.1 or 7.0.x , the line self.date = [f dateFromString:s]; returns nil every time.

I have checked and the string s exists and contains the same characters when compared side-by-side with a device that does parse the date correctly.

This is an example date string: `2013-10-31T21:50:00-06:00\'

Am I missing something here?


回答1:


It's because you are not setting the date formatter's locale to the special en_US_POSIX locale. Most likely your iPhone 5 has a different setting for the 24-hour setting.

You need to set the special locale whenever you parse a fixed format string.



来源:https://stackoverflow.com/questions/19578433/hardware-dependent-nsdateformatter-datefromstring-bug-returns-nil

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!