不同的日期格式

问题描述:

我使用以下代码来显示在不同语言的日期:不同的日期格式

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)时携带自己的文本资源以实现统一的国际化体验的一些主要原因之一。 –

我这样做是为了以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的注释。 –