我在我的应用中使用以下代码:
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。为什么呢?
答案 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但你期望长日期格式,所以......