Objective c NSDateFormatter dateFromString:stringDate在iOS 8.3中返回零

Objective c NSDateFormatter dateFromString:stringDate在iOS 8.3中返回零,objective-c,xcode6,nsdateformatter,ios8.3,Objective C,Xcode6,Nsdateformatter,Ios8.3,我有这个密码 NSString *stringDate = @"2015-07-09 7:00 AM"; NSString *stringDateFormat = @"yyyy-MM-dd h:mm a"; NSTimeZone *timeZone = [NSTimeZone localTimeZone]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter setTimeZone:ti

我有这个密码

NSString *stringDate = @"2015-07-09 7:00 AM";
NSString *stringDateFormat = @"yyyy-MM-dd h:mm a";
NSTimeZone *timeZone =  [NSTimeZone localTimeZone];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter setTimeZone:timeZone];
[dateFormatter setDateFormat:stringDateFormat];
NSDate *dateFormatted = [dateFormatter dateFromString:stringDate];
现在的问题是dateFormatted始终获取nil值。当我在模拟器iPhone5s 8.2中尝试它时,它是正常的,但是当我在设备iPhone5s 8.3中运行它时,问题就出现了


有人能帮我找出为什么dateFormatted的值为零吗?

这几乎是一个固定的回答,但:。将格式化程序的区域设置设置为
en_US\u POSIX
,否则其行为将取决于用户的设置。

您提供的链接解释了实际发生的情况以及失败的原因。谢谢!是的,这有点模糊,但我的理解是:如果
NSDateFormatter
考虑了用户的区域设置,那么它保留调整日期格式的权利。默认情况下,它将考虑用户的区域设置。您可以将该特定区域设置设置为禁用该设置。一个猜测:苹果希望人们在默认情况下正确显示日期,因为错误可能不会出现在bug追踪器上,但会惹恼人们,但必须做一些工作来纠正互联网日期,因为错误可能会出现在bug追踪器上。链接真的很有用!