2010-11-22 53 views
0

我希望能在一個「長」英語,西班牙語和德語日期格式來格式化java.util.Date對象。所謂「長」我的意思是對應於LONG風格圖案常數java.text.DateFormat特定語言環境的日期格式:如何在應用程序中包含足夠的語言環境數據以便能夠在三種語言環境中格式化日期?

DateFormat.getDateInstance(DateFormat.LONG, myLocale).format(myDate); 

使用標準的JRE,我得到的日期字符串,如:

November 22, 2010 
22 de noviembre de 2010 
22. November 2010 

預期。在Android 1.5,不過,我得到:

November 22, 2010 
2010 11 22 
2010 11 22 

有沒有一種方法,我可以包括使用java.text.DateFormat與我的應用程序只是足夠的語言環境信息,以便能夠在長期英語,西班牙語正確格式化日期和德國的格式?

回答

0

首先,在JRE格式化日期是已知的許多區域設置不正確的行爲(無效波蘭,捷克和俄羅斯的長紅棗,無效波蘭短日期,而這僅僅是什麼,我肯定知道的例子)。所以我不太相信這個信息來源。

如果你想實現自己的長日期格式邏輯,這裏是我會做什麼:

String spanishDatePattern = "{0,number,00} {1} {2,number,####}"; 
String spanishLongDateMonthNameNovember = "de noviembre de"; 

Object[] arguments = { new Integer(date.getDate()), 
         spanishLongDateMonthNameNovember, 
         new Integer(date.getYear()) }; 
String formattedDate = MessageFormat.format(spanishDatePattern, 
       arguments); 

在這種情況下,你需要每種語言13條消息(12個月〜名稱和1種模式)。我相信沒有那麼多。

當然這只是一個例子,實際上您可能還需要添加邏輯來解析月份名稱(具有名稱以月份結尾的鍵,即longDateFormatMonthName.0 = January?)。

相關問題