2011-11-24 39 views
0

我試圖本地化我的日期,但由於某些原因,它不會從區域輸出正確的格式。NSDateFormatter不根據地區給出consitent日期

這是怎麼測試我的代碼:

if(dateformater==nil) 
dateformater =[[NSDateFormatter alloc] init]; 
[dateformater setLocale:[NSLocale currentLocale]]; 
[dateformater setDateStyle:NSDateFormatterMediumStyle]; 
[dateformater setTimeStyle:NSDateFormatterShortStyle]; 
NSString *string_date=[dateformater stringFromDate:date]; 
NSLog(@"Loacle:----%@ Date:----%@",[[NSLocale currentLocale] localeIdentifier],string_date); 

下面是本地化日期是什麼樣子一些例子,這裏是出了問題。

Loacle:----da_DK Date:----24/11/2011 14.10--------(WRONG) 
Loacle:----en_BE Date:----24 Nov 2011 14:09--------(OK) 
Loacle:----nl_BE Date:----24-nov.-2011 14:10------(WRONG) 
Loacle:----fr_BE Date:----24 nov. 2011 14:11-------(OK) 
Loacle:----en_US Date:----Nov 24, 2011 2:11 PM-----(OK) 
Loacle:----en_GB Date:----24 Nov 2011 14:11--------(OK) 

要求說明它應該對所有區域一致。

+0

解釋爲什麼「錯誤」行是錯誤的。 – vocaro

+0

我想一致的方式爲loacale en_BE我沒有得到分隔符和獲得月份符號,但da_DK我越來越分隔符在日期和我越來越11而不是11月 – Narayana

回答

0

如果您想要相同的輸出,您需要使用相同的語言環境,或使用setDateFormat:。具有區域設置的整點是具有不同樣式的不同格式。

+0

我不想要相同的輸出,我需要日期根據區域設置。 – Narayana

+0

也許你需要使用'setDateFormat:'來代替'setDateStyle:'和'setTimeStyle:'。 –

+0

如果我設置特定的格式,我會得到更多的問題。語言環境en_US我們得到2011年11月24日下午2:11和語言環境en_GB我們得到2011年11月24日14:11。日期和月份的順序可能會發生變化 – Narayana