1

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

编码:

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

我的调试器会话:

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

我要疯了吗?Java中这种基本的东西真的有错误吗?

Java 1.6.0_43

4

1 回答 1

5

在我的机器上工作...

恕我直言,这是语言环境的问题。在 AM/PM 系统中,12:32 可能被解析为 00:32。

你能测试一下:

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

另一个解决方案

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

于 2013-09-20T12:06:49.153 回答