Java SimpleDataFormat错误解析?

Java SimpleDataFormat错误解析?,java,date,Java,Date,在与调试器进行了一次令人恼火的会话之后,我似乎在SimpleDateParser中发现了一个bug 守则: 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"

在与调试器进行了一次令人恼火的会话之后,我似乎在SimpleDateParser中发现了一个bug

守则:

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中这种基本的东西真的会有bug吗

Java 1.6.043在我的机器上运行

嗯,这是一个地区问题。在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

在我的机器上工作

嗯,这是一个地区问题。在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

我没有得到与您相同的输出:
Fri Sep 20 12:23:45 CEST 2013
。我也得到了正确的输出:如果这是iOS,我会怀疑区域设置12/24“功能”有一些变化。您不应该在未指定区域设置的情况下使用DateFormats。您是复制粘贴了问题中的格式还是重写了问题中的格式?我的意思是,如果真正的格式是
hh:mm:ss
而不是
hh:mm:ss
,这将是一种正常的行为,或者不会得到与您相同的输出:
Fri Sep 20 12:23:45 CEST 2013
。我也得到了正确的输出:如果这是iOS,我会怀疑区域设置12/24“功能”上存在一些变化。在未指定区域设置的情况下,不应使用DateFormats。您是复制粘贴问题中的格式还是重写了该格式?我的意思是,如果真正的格式是
hh:mm:ss
而不是
hh:mm:ss
,这将是一种正常的行为。这应该是一种评论。我尽可能多地使用评论,但我真诚地认为这是正确的答案。我不这么认为:如果是AM/PM系统,它不能在13和14小时内正确解析。@ArnaudDenoyelle很公平-第一次迭代听起来确实像
你能试试吗
?HH是24小时格式的,我需要12小时格式的。这应该是一个评论。我尽可能多地使用评论,但我真诚地认为这是正确的答案。我不这么认为这样想:如果它是AM/PM系统,它在13小时和14小时内都不能正确解析。@ArnaudDenoyelle很公平-这个系统的第一次迭代听起来确实像
你能试试吗
?HH是24小时格式的,我需要12小时格式的