2016-03-07 123 views
1

我使用以下代碼來顯示在不同語言的日期:不同的日期格式

int formatTime[] = { 
      DateUtils.FORMAT_ABBREV_ALL, 
      DateUtils.FORMAT_ABBREV_MONTH, 
      DateUtils.FORMAT_ABBREV_RELATIVE, 
      DateUtils.FORMAT_ABBREV_TIME, 
      DateUtils.FORMAT_ABBREV_WEEKDAY, 
      DateUtils.FORMAT_NO_MIDNIGHT, 
      DateUtils.FORMAT_NO_MONTH_DAY, 
      DateUtils.FORMAT_NO_NOON, 
      DateUtils.FORMAT_NO_YEAR, 
      DateUtils.FORMAT_NUMERIC_DATE, 
      DateUtils.FORMAT_SHOW_DATE, 
      DateUtils.FORMAT_SHOW_YEAR, 
      DateUtils.FORMAT_SHOW_TIME, 
      DateUtils.FORMAT_SHOW_WEEKDAY, 
      }; 
    for (int i = 0; i< formatTime.length; i++){ 
     Log.d("dateFormat " + i, DateUtils.formatDateTime(MyApplication.getMyApplicationContext(), timestamp, formatTime[i])); 
    } 

加泰羅尼亞語的輸出是在LGE LG-H440n(5.0.1,API 21)和Nexus 4(5.1.1 API 22):

D/dateFormat 0: 7 març 
D/dateFormat 1: 7 març 
D/dateFormat 2: 7 març 
D/dateFormat 3: 7 març 
D/dateFormat 4: 7 març 
D/dateFormat 5: 7 març 
D/dateFormat 6: març 
D/dateFormat 7: 7 març 
D/dateFormat 8: 7 març 
D/dateFormat 9: 7/3 
D/dateFormat 10: 7 març 
D/dateFormat 11: 7 març de 2016 
D/dateFormat 12: 18:11 
D/dateFormat 13: dilluns 

並輸出的Nexus 5×(6.0.1,API 23):

D/dateFormat 0: 7 de març 
D/dateFormat 1: 7 de març 
D/dateFormat 2: 7 de març 
D/dateFormat 3: 7 de març 
D/dateFormat 4: 7 de març 
D/dateFormat 5: 7 de març 
D/dateFormat 6: març 
D/dateFormat 7: 7 de març 
D/dateFormat 8: 7 de març 
D/dateFormat 9: 7/3 
D/dateFormat 10: 7 de març 
D/dateFormat 11: 7 de març de 2016 
D/dateFormat 12: 18:11 
D/dateFormat 13: dilluns 

類似的東西HAPP與時間格式ENS:

DateUtils.getRelativeTimeSpanString(context, timespan * 1000, true).toString().toLowerCase(); 

和輸出是 「LES 18:32」 在Nexus和 「一拉(ES)18:32」,在LG-H440n

我懷疑類似的東西會發生在其他語言。 這是關於什麼?

+1

我不驚訝。不同的Android版本從Unicode-consortium的不同CLDR版本檢索文本資源。 CLDR確實已經改變了加泰羅尼亞的資源,以最近解決一些相關問題。這是我開發[Time4A](https://github.com/MenoData/Time4A)時攜帶自己的文本資源以實現統一的國際化體驗的一些主要原因之一。 –

回答

0

我這樣做是爲了以YYYY-MM-DD格式和美國語言環境獲取當前日期。

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd", Locale.US); 
formatter.setTimeZone(TimeZone.getTimeZone("UTC")); 
String CurrentDate = formatter.format(new Date()); 
Date current_date = formatter.parse(CurrentDate); //In case need the entire Date value 

希望這有助於!

+1

這與這個問題有什麼關係? –

+0

@MenoHochschild - 問題被要求以不同語言格式化日期。我舉了一個例子來格式化美國語言環境中的日期。 –

+1

不,問題是爲什麼在不同的設備上有相同語言的不同輸出/格式(OP的例子:加泰羅尼亞語)。使用'SimpleDateFormat'不會改變同一種語言在不同設備上輸出不同的事實,因爲它最終會訪問當前Android版本的內置文本資源,另請參閱我上面給OP的註釋。 –