我在NSDateFormatter在一个用户的设备上失败(在解析一个字符串时返回nil)并且在本地运行时(在模拟器中或在我的设备)。在两个不同的设备上与NSDateFormatter不一致的行为
我想排除什么可能会导致此行为的差异。我的第一个想法是语言环境,但我试着明确地设置它,以确保始终使用相同的区域设置,但它没有区别。
下面是代码:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
[dateFormatter setLocale:locale];
[locale release];
NSDate *theDate = [dateFormatter dateFromString:dateString];
NSLog(@"PARSING DATE %@ AS %@", dateString, theDate);
在发生故障的设备,我得到:
PARSING DATE 2010-11-28T20:30:49-0000 AS (null)
但本地获得:
PARSING DATE 2010-11-28T20:30:49-0000 AS 2010-11-28 20:30:49 +0000
这是推动我疯了,我我缺少别的东西?
我运行4.2本地(模拟器)和我的设备(iPhone 4)。失败的设备是运行4.2.1的3GS。
任何想法将不胜感激!
由于您明确设置了格式字符串,您是否尝试删除区域设置代码? – Costique 2010-12-11 19:24:33
设备是否打开了“24小时制”设置?有关更多信息,请参阅[Apple QA1480](http://developer.apple.com/library/ios/#qa/qa2010/qa1480.html)。 – Anna 2010-12-11 23:05:13
是的,我已经尝试过,没有像上面那样设置区域设置。 – 2010-12-12 00:17:59