具有区域格式的NSDateFormatter

use*_*385 4 iphone objective-c

我使用此代码处理来自json feed的日期字符串:

NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle: NSDateFormatterLongStyle];
[formatter setFormatterBehavior: NSDateFormatterBehavior10_4];
[formatter setDateFormat: @"EEE, dd MMM yyyy HH:mm:ss +0000"];
Run Code Online (Sandbox Code Playgroud)

所以,如果我打电话

NSDate *date = [formatter dateFromString: @"Tue, 08 Sep 2009 19:21:27 +0000"];
Run Code Online (Sandbox Code Playgroud)

如果我的地区格式是美国或联合王国,我会回到可用的日期,但如果我将它设置为德国则返回nil.我理解不同语言环境中的行为存在一些差异,但是如果我定义一种格式不应该纠正任何不一致?

Dar*_*ren 8

"Tue"和"Sep"这样的名字是英文.其他语言使用不同的名称.

如果您希望能够独立于设备的区域设置解析英语日期,请将DateFormatter的语言环境设置为en_US使用该-setLocale:方法.