我希望能够以“长”英语,西班牙语和德语日期格式格式化java.util.Date
个对象。 “long”是指与java.text.DateFormat
中的LONG
样式模式常量对应的与语言环境相关的日期格式:
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 :(得分: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 = 1月?)。