Ios NSDateFormatter不显示完整的月份名称,仅显示一位数

Ios NSDateFormatter不显示完整的月份名称,仅显示一位数,ios,nsdate,nsdateformatter,Ios,Nsdate,Nsdateformatter,不确定问题是什么,但我没有得到一个月的名字“七月”,而是得到了“07” 我试过M,MM,MMM,MMMM,它们都给了我一个数字,而不是月份名称,尽管前导0的数量不同 -systemLocale不是您想要的。如果没有其他区域设置适合,则返回备用区域设置。使用-currentLocale获取用户的当前区域设置 另外: 您应该使用NSDateFormatter的+dateFormatFromTemplate:options:locale:方法来获取正确的日期格式。在某些语言中,日期早于月份,反之亦然。

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


我试过M,MM,MMM,MMMM,它们都给了我一个数字,而不是月份名称,尽管前导0的数量不同

-systemLocale
不是您想要的。如果没有其他区域设置适合,则返回备用区域设置。使用
-currentLocale
获取用户的当前区域设置

另外:

您应该使用
NSDateFormatter
+dateFormatFromTemplate:options:locale:
方法来获取正确的日期格式。在某些语言中,日期早于月份,反之亦然。

第二行,
setLocale
出现问题。我假设在手动设置
区域设置时,系统不会默认使用英文月份名称?我生活在一个讲英语的地区,但也许这并不重要

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

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

问题在于区域设置,而不是格式。看看这个:


基本上,“MMMM”会告诉你这个月的全名。

我想这行就是问题所在。。[dateFormat setLocale:[NSLocale systemLocale]];不知道您使用
systemLocale
的目的是什么,但您可以尝试
currentLocale
而不是
systemLocale
dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];    
[dateFormat setDateFormat:@"MMMM dd, h:mm a"];