SimpleDateFormat错误中午解析?

Tom*_*yre 1 java date

在与调试器进行令人讨厌的会话后,我似乎在SimpleDateParser中发现了一个错误。

代码:

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Run Code Online (Sandbox Code Playgroud)

我的调试器会话:

formatter.parse("2013-09-20 10:23:45.123")
Fri Sep 20 10:23:45 BST 2013

formatter.parse("2013-09-20 11:23:45.123")
Fri Sep 20 11:23:45 BST 2013

formatter.parse("2013-09-20 12:23:45.123")
Fri Sep 20 00:23:45 BST 2013

formatter.parse("2013-09-20 13:23:45.123")
Fri Sep 20 13:23:45 BST 2013

formatter.parse("2013-09-20 14:23:45.123")
Fri Sep 20 14:23:45 BST 2013

formatter.parse("2013-09-20 00:23:45.123")
Fri Sep 20 00:23:45 BST 2013
Run Code Online (Sandbox Code Playgroud)

我要疯了吗?Java的这种基本功能真的存在错误吗?

Java 1.6.0_43

Arn*_*lle 5

在我的机器上工作...

恕我直言,这是一个地区问题。在AM / PM系统中,12:32可能被解析为00:32。

你可以测试:

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.FRENCH);
Run Code Online (Sandbox Code Playgroud)

另一个解决方案:

我不知道您是否复制了日期格式或是否在问题中复制粘贴了日期格式,但是如果该格式是yyyy-MM-dd hh:mm:ss.SSS(小写的hh),则此行为是正常的。使用HH代替。

  • 我尽可能使用评论,但我真诚地认为这是正确的答案。 (4认同)