我注意到我的应用的某些用户遇到了奇怪的格式化日期,我认为这是由于语言环境原因造成的。有人可以建议更好的方法来实现预期的结果和/或解释如何正确处理(可能的)区域设置问题吗?
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
答案 0 :(得分:1)
使用SimpleDateFormat
格式化日期时间字符串。它有一个constructor that allows you to specify the Locale
,例如Locale.US
。
Time.format()
始终使用当前用户选择的语言环境,这可能不是您想要的。