2015-11-06 76 views
1

我想顯示給定日期的月份和日期,就像這樣:格式部分日期基於區域

「11月5日」

但允許更改順序基於語言環境。

「11月5日」(或任何其他人做)

我知道我可以簡單地硬編碼格式,象這樣:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"MMMM d"]; 

但是,這並不更新區域設置,而且我不想對使用一種樣式或另一種樣式的區域設置進行硬編碼。

通常,當我想爲給定的本地顯示日期時,我知道我可以在格式化程序上使用setDateType,並從很多預先存在的格式中選擇,這些格式將很好地解釋當前語言環境。不幸的是,現有的NSDateFormatterStyle都不會顯示我需要的方式。

我已經能夠想到的一種解決方案是將日期樣式設置爲長樣式,然後通過dateFormat字符串進行讀取,並查看是否先打「d」或「M」。然後相應地格式化它。這將是相當容易做到的,但它看起來很黑。當然有更好的方法來做到這一點。

有什麼建議嗎?

回答

1

顯然NSDateFormatter dateFormatFromTemplate是一件事情,它解決了我的問題。

NSString *format = [NSDateFormatter dateFormatFromTemplate:@"MMMM d" options:0 locale:[NSLocale currentLocale]]; 

這將根據當前語言環境正確地在您的模板之後格式化日期。