【问题标题】:AM/PM symbol in certain locale is not as expected某些语言环境中的 AM/PM 符号与预期不符
【发布时间】:2014-05-26 07:26:34
【问题描述】:

我发现这篇文章可以解释我的问题的一半。这就是为什么我的 AM 符号不是我所期望的。 Unable to parse DateTime-string with AM/PM marker

SimpleDateFormat sdfBefore = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a", Locale.US);
// I tried format with 2 [a] as well , MM/dd/yyyy hh:mm:ss aa
//SimpleDateFormat sdfAfter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);

System.out.println("Debug: test6 = "+sdfBefore.format(System.currentTimeMillis()));
System.out.println("Debug: test7 = "+sdfBefore.parse("05/26/2014 06:57:07 a.m."));
System.out.println("Debug: test8 = "+sdfBefore.parse("05/26/2014 06:57:08 A.M."));
System.out.println("Debug: test9 = "+sdfBefore.parse("05/26/2014 06:57:09 AM"));

这是我的结果:

Debug: test6 = 05/26/2014 07:30:01 a.m.
Debug: test7 = Mon May 26 06:57:07 GMT 2014
Debug: test8 = Mon May 26 06:57:08 GMT 2014
Error: java.text.ParseException: invalid Date syntax in "05/26/2014 06:57:09 AM"

到目前为止我尝试过的语言环境:

German = vorm.
US/ENGLISH/<default>/Canada = a.m.
chinese = ? <--probably cause my sonsole doesn't support it

我在网上找到的每个示例都表明英语/美国语言环境应该是符号“AM”和“PM”的正确语言环境

有人注意到这里有什么问题吗?

【问题讨论】:

  • 当我尝试这个时,我得到结果“调试:test6 = 05/26/2014 09:36:56 AM”和 Unparseable date “05/26/2014 06:57:07 a.m.” (这似乎是正确的,因为“a.m.”不是有效的 AM/PM 标记。您使用哪个 java 版本?
  • 1.5 版,我目前正在研究 DateFormatSymbols.setAmPmStrings(newAmpms);看看有没有帮助..
  • 没有得到您正在寻找的确切问题?可以再解释一下吗?
  • @JackyCheng 如果对这些符号进行了调整,也许你应该看看项目配置,因为这不是正常配置。
  • @UweAllner 谢谢,我去看看。我也觉得这很奇怪。

标签: java locale simpledateformat


【解决方案1】:

好的,所以我找到了一种蛮力修复它的方法,但如果有人知道它的根本原因是什么,我仍然会很感激。

DateFormatSymbols sym = new DateFormatSymbols(Locale.US);
sym.setAmPmStrings(new String[] { "AM", "PM"});
SimpleDateFormat sdfBefore = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a", sym);

System.out.println("Debug: test6 = "+sdfBefore.format(System.currentTimeMillis()));
System.out.println("Debug: test9 = "+sdfBefore.parse("05/26/2014 06:57:09 AM"));

结果:

Debug: test6 = 05/26/2014 07:47:44 AM
Debug: test9 = Mon May 26 06:57:09 GMT 2014

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-23
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 2021-10-29
    • 2017-03-08
    • 2016-05-02
    相关资源
    最近更新 更多