日期格式不一致,可能是由于语言环境?

时间:2014-02-12 13:38:49

标签: date datetime time android

我注意到我的应用的某些用户遇到了奇怪的格式化日期,我认为这是由于语言环境原因造成的。有人可以建议更好的方法来实现预期的结果和/或解释如何正确处理(可能的)区域设置问题吗?

Time time = new Time();
time.setToNow();
String timeString = time.format("%b_%d_%Y_%I-%M-%S-%p");

预期结果:

Feb_12_2014_10-06-09-AM

从我的日志中我偶尔会看到这样的结果:

2?_12_2014_07-35-58-??
遗憾的是,我没有捕获语言环境信息,所以我不知道确切的细节。

编辑:在尝试接受的解决方案之后,这是Android上每个区域设置的结果。

en_ca Feb_12_2014_10-49-52-AM
fr_CA févr._12_2014_10-49-52-AM
en_ca Feb_12_2014_10-49-52-AM
zh_CN 2?_12_2014_10-49-52-AM
zh 2?_12_2014_10-49-52-AM
en Feb_12_2014_10-49-52-AM
fr_FR févr._12_2014_10-49-52-AM
fr févr._12_2014_10-49-52-AM
de Feb._12_2014_10-49-52-AM
de_DE Feb._12_2014_10-49-52-AM
it_IT feb_12_2014_10-49-52-AM
ja 2?_12_2014_10-49-52-AM
ko_KR 2?_12_2014_10-49-52-??
ko 2?_12_2014_10-49-52-??
zh_CN 2?_12_2014_10-49-52-AM
<none> 2_12_2014_10-49-52-AM
zh_CN 2?_12_2014_10-49-52-AM
zh_TW 2?_12_2014_10-49-52-??
en_GB Feb_12_2014_10-49-52-AM
en_US Feb_12_2014_10-49-52-AM

1 个答案:

答案 0 :(得分:1)

使用SimpleDateFormat格式化日期时间字符串。它有一个constructor that allows you to specify the Locale,例如Locale.US

Time.format()始终使用当前用户选择的语言环境,这可能不是您想要的。

进一步阅读:Be wary of the default locale