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