String.format不提供德语区域设置中的月份和周围名称

时间:2011-06-07 12:33:56

标签: android date localization format

我在我的应用中使用以下代码:

Calendar tmpCalendar = Calendar.getInstance(Locale.getDefault());
String itemTime = String.format(
        Locale.getDefault(),
        "%1$tA, %1$te. %1$tB %1$tY",
        tmpCalendar);

德语是我设备上的默认语言,因此我希望得到类似的内容:

  

Dienstag,7。Juni 2011

相反,我得到了:

  

3,7。6 2011

如果我使用Locale.US代替Locale.getDefault(),一切正常。我做错了吗?

奇怪的是,它适用于运行Android 2.2的德语模拟器,但不适用于运行2.2的HTC Desire。为什么呢?

3 个答案:

答案 0 :(得分:1)

这似乎是某些供应商的错误,而且是issue #9453 in the Android issue tracker

答案 1 :(得分:0)

SimpleDateFormat sdf = new SimpleDateFormat("EE/MM/yyyy");
Date date = new Date();
String sDate= sdf.format(date);

详细了解here

答案 2 :(得分:0)

它完全符合您的要求。如果您希望对流程进行精细控制,则可以始终使用SimpleDateFormat。但是,我宁愿推荐这种方法:

Calendar tmpCalendar = Calendar.getInstance(Locale.getDefault());
DateFormat formatter = DateFormat.getDateInstance(DateFormat.LONG, Locale.getDefault());
formatter.setTimeZone(TimeZone.getDefault());
String itemTime = formatter.format(tmpCalendar.getTime());

另外,我建议使用DateFormat.DEFAULT但你期望长日期格式,所以......