Objective-C中的日期格式化程序返回null

问题描述:

我不明白为什么我的dateFormatter返回null。代码非常简单,但我在这里没有看到任何错误。我也尝试使用setDateFormat,但没有任何结果。代码有什么问题?Objective-C中的日期格式化程序返回null

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 
[dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 
mikey.hireDate = [dateFormatter dateFromString:@"Aug 02, 2010"]; 

将日期格式化程序的语言环境设置为EN_US_POSIX。这样,设备的区域不会改变格式器。

NSLocale *locale = [[NSLocale alloc] 
       initWithLocaleIdentifier:@"EN_US_POSIX"]; 
[dateFormatter setLocale:locale]; 
+0

谢谢。它有帮助。那么,Xcode是使用我的设备的当前位置来更改日期的格式或什么?你能否更详细地解释为什么我们应该使用locale初始化日期格式化程序? – Tigran

+0

没错。日期格式化程序默认使用实际设备的区域设置。例如,如果用户使用中文电话,“Aug”将是一个未定义的短月,因为它是英文的。 – the4kman

+0

好的。非常感谢你! – Tigran

您的代码在我的机器上工作;这就是说,如果你想从用户输入中解析日期字符串,NSDataDetector通常比NSDateFormatter更好。