SimpleDateFormat错误解析正午?

时间:2013-09-20 12:02:34

标签: java date

在与调试器激烈交谈后,我似乎在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

1 个答案:

答案 0 :(得分:5)

在我的机器上工作......

imho,这是一个语言环境问题。在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