我在iOS上看到NSDateFormatter出现问题,当设置/通用/国际/日历在模拟器和真实设备上都设置为日语或佛教徒时。语言的设置似乎并不重要,而区域格式只重新排列(但它仍然很糟糕)。以下结果均适用于“语言”=英语和“地区格式”=日本的情况。
这是我的代码(ARC已启用):
// Configure the Date Formatter
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[NSLocale currentLocale]];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
// Format the date string
NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];
结果:
我找到了这个链接:http://www.cocoanetics.com/2011/12/ios-5-breaking-nsdateformatter/,这很有意思,但并没有真正指向我的解决方案。我还发现了这个:NSDateFormatter and Japanese calendar,所以我稍微更改了我的代码:
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:[[NSLocale preferredLanguages] objectAtIndex:0]]];
然后我的结果是这些(这些对我来说都是错误的,基本上是美国MM / DD / YY格式):
在上述所有结果中,唯一看起来正确的是带有日历=日语的iOS4.3。
有什么想法吗?
答案 0 :(得分:4)
该区域影响日期格式,而不是语言。您正在设置格式以使用用户的区域:
[dateFormatter setLocale:[NSLocale currentLocale]];
如果您希望所有用户都采用一致的格式,可以将其设置为系统的本地格式:
[dateFormatter setLocale:[NSLocale systemLocale]];