SimpleDateFormat 在输入错误格式的日期字符串时给出错误的日期

问题描述 投票:0回答:2

代码是

        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
        Date date = format.parse("2024-03-01 09:20:46");

date
的值为
Sun Dec 03 00:01:09 CST 2023
,没有任何例外。

我在jdk中读到一些评论,它可能表明'-'会被视为减号,这是真的吗? 以及如何理解SimpleDateFormat.parse方法中的read think

java datetime simpledateformat
2个回答
0
投票

正如评论所解释的:

  • 如果想要严格解析,而不容忍有问题的输入,请指定严格解析。
  • 您正在使用有严重缺陷的 dae-time 类,这些类现在已经成为遗留的。这些类几年前就被 JSR 310 中定义的现代 java.time 类取代。

java.time 中,通过调用

DateTimeFormatter
 并传递 
withResolverStyle
枚举对象来指定对
ResolverStyle
类进行严格解析。


-1
投票

使用日期时间格式化程序

你可以这样做

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse("2024-03-01 09:20:46");
© www.soinside.com 2019 - 2024. All rights reserved.