28

不确定问题是什么,但我没有得到月份名称“July”,而是得到“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 的数量不同。

4

3 回答 3

54

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

无论如何,不​​设置语言环境可以解决月份名称问题。

dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];    
[dateFormat setDateFormat:@"MMMM dd, h:mm a"];
于 2012-08-24T19:38:32.550 回答
15

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

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

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

于 2012-08-24T19:39:37.463 回答
8

-systemLocale不是你想要的。如果没有其他语言环境适合,它会返回一个备用语言环境。用于-currentLocale获取用户的当前语言环境。

另外:
您应该使用NSDateFormatter'+dateFormatFromTemplate:options:locale:方法来获取正确的日期格式。在某些语言中,这一天在月份之前,等等,反之亦然。

于 2012-08-24T19:37:21.200 回答