Java - 解析 SimpleDateFormat 小时时出现问题,00 和 02 有效,但 01 无效

标签 java date

我正在解析日期“00:45:00 Mar:2017”、“01:45:00 Mar:2017”和“02:45:00 Mar:2017”。

除了“01:45:00 Mar:2017”之外,所有其他输出都给出正确的输出,该输出始终四舍五入为“02:45:00 Mar:2017”。

代码

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());
}

“2017 年 3 月 00:45:26”的输出

Sun Mar 26 00:45:00 GMT 2017

“2017 年 3 月 01:45:26”的输出

Sun Mar 26 02:45:00 BST 2017

“2017 年 3 月 02:45:26”的输出

Sun Mar 26 02:45:00 BST 2017

最佳答案

第 0 天?

您的模式表示第三对数字是月份中的某一天 (dd),但不能有日期数字零,如 00 示例中所示。

我怀疑第三对数字实际上是而不是月份,并且您的月份日期丢失了。

英国 DST 切换

确实如此,在英国,夏令时 (DST) 切换“ Spring 提前”是 2017 年 3 月 29 日 01:00。 Described here :

Mar 26, 2017 - Daylight Saving Time Started When local standard time was about to reach Sunday, March 26, 2017, 1:00:00 am clocks were turned forward 1 hour to Sunday, March 26, 2017, 2:00:00 am local daylight time instead

格式模式区分大小写

另一个问题:您使用了小写 hh,而您可能应该使用大写 HH 来表示 24 小时制。

避免遗留日期时间类

此外,您正在使用现在已成为遗留问题的旧日期时间类。被 java.time 类取代。

关于Java - 解析 SimpleDateFormat 小时时出现问题,00 和 02 有效,但 01 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43024090/

相关文章:

Python如何清理脏的日期时间字符串

php - 在angularjs中减去日期

javascript - 如何使用单个正则表达式解析 "dd-MMM-yyyy"或 "MMM-dd-yyyy"日期字符串?

java - 以 root 身份运行 JNI native 代码 (Mac)

java - 无法在不同的类中填充 ArrayList<>

java - 如何通过蓝牙通过参数发送配对码连接两个设备? JAVA-安卓

java - intellij junit @RunWith 未解决

php - 使用 PHP 按键和值取消设置数组

java - 如何配置代理设置以便 eclipse indigo 可以安装新插件

java - 从 Java XMLGregorianCalendar 中删除时间戳