我正在解析约会,“Mar:2017:00:45:00”,“Mar:2017”01:45:00“和”Mar:2017“02:45:00”。
除了“2017年3月1日:2017:00:00”,所有其他人都提供了正确的输出,这些输出总是围绕“2017年3月2日:02:45:00”。代码
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("hh:mm:dd MMM:yyyy");
Date date = simpleDateFormat.parse("01:45:26 Mar:2017");
System.out.print(date);
} catch (ParseException e) {
System.out.print(e.getMessage());
}
“Mar:00:45:26:2017”
的输出Sun Mar 26 00:45:00 GMT 2017
“3月:01:45:26”的输出
Sun Mar 26 02:45:00 BST 2017
“Mar:02:45:26:2017”
的输出Sun Mar 26 02:45:00 BST 2017
答案 0 :(得分:1)
您的模式表示第三对数字是日期(dd
),但是在00
示例中看不到天数为零。
我怀疑第三对数字实际上是秒而不是日期,并且您的日期缺失。
确实如此,在英国,夏令时(DST)切换“春季前进”是2017-03-29 01:00。 Described here:
2017年3月26日 - 夏令时开始 当地标准时间即将达到 2017年3月26日星期日凌晨1:00:00时钟转发1小时到 2017年3月26日星期日,当地白天时间凌晨2:00:00
另一个问题:您使用了小写hh
,您可能应该使用大写HH
进行24小时制。
此外,您正在使用现在遗留下来的麻烦的旧日期时间类。由java.time类补充。
答案 1 :(得分:0)
显然英国时钟在3月26日凌晨1点发生变化。