2012-08-24 45 views
22

不知道問題出在哪裏,而是得到一個月份名稱「July」,而我得到「07」。NSDateFormatter沒有顯示完整的月份名稱,只有一個數字號碼

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

我已經試過男,MM,MMM,MMMM,和所有的人給我一個號碼,而不是一個月名字,雖然有不同數量的前導零的。

+0

我認爲這行是問題.. [dateFormat setLocale:[NSLocale systemLocale]];不知道你使用'systemLocale'的目的是什麼,但你可以嘗試'currentLocale'而不是'systemLocale' – ila

回答

45

原來是第二行setLocale的問題。我假設當手動設置locale時系統不會默認使用英文月份名稱?我住在講英語的locale,但也許沒關係。

在任何情況下,不設置區域設置修復月份名稱問題。

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

-systemLocale是不是你想要的。如果沒有其他語言環境適合,它將返回一個回退語言環境。使用-currentLocale獲取用戶的當前區域設置。

另外:
您應該使用NSDateFormatter+dateFormatFromTemplate:options:locale:方法來獲取正確的日期格式。在某些語言中,這一天在這個月之前,等等,反之亦然。

相關問題