NSDateFormatter未显示完整月份名称,仅显示单个数字

时间:2012-08-24 19:32:20

标签: ios nsdate nsdateformatter

不确定是什么问题,但是我得到了“07”而不是一个月的名字“七月”。

dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setLocale:[NSLocale systemLocale]];
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];    
[dateFormat setDateFormat:@"MMMM dd, h:mm a"];

我已经尝试了M,MM,MMM,MMMM,并且所有这些都给了我一个数字,而不是月份名称,但是前导0的数量不同。

3 个答案:

答案 0 :(得分:49)

原来是第二行setLocale的问题。我假设在手动设置locale时系统不会默认使用英文月份名称?我住的是英语locale,但也许没关系。

在任何情况下,不设置区域设置都会修复月份名称问题。

dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];    
[dateFormat setDateFormat:@"MMMM dd, h:mm a"];

答案 1 :(得分:10)

问题是语言环境,而不是格式。看看这个:

http://waracle.net/mobile/iphone-nsdateformatter-date-formatting-table/

基本上,“MMMM”会为您提供当月的全名。

答案 2 :(得分:7)

-systemLocale不是你想要的。如果没有其他语言环境适合,它将返回后备语言环境。使用-currentLocale获取用户当前的区域设置。

此外:
您应该使用NSDateFormatter的{​​{1}}方法来获取正确的日期格式。在某些语言中,这一天是在月份之前等,反之亦然。