意外的行为DateFormat

问题描述

我面临Java中DateFormat的奇怪行为。 我这样声明了一个DateFormat:

    private static final DateFormat     DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH");

但是我在这行有一个例外

    Date date = DATE_FORMAT.parse(rawDate); rawDate = "2020-08-08 12"
Caused by: java.lang.NumberFormatException: For input string: ".241822E"
    at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054) ~[na:na]
    at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110) ~[na:na]
    at java.base/java.lang.Double.parseDouble(Double.java:549) ~[na:na]
    at java.base/java.text.DigitList.getDouble(DigitList.java:169) ~[na:na]
    at java.base/java.text.DecimalFormat.parse(DecimalFormat.java:2198) ~[na:na]
    at java.base/java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:2241) ~[na:na]
    at java.base/java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1542) ~[na:na]
    at java.base/java.text.DateFormat.parse(DateFormat.java:394) ~[na:na]
    at com.livingobjects.collector.plugin.sfr.archipel.AstelliaDebit4GPlugin.handle(AstelliaDebit4GPlugin.java:109) ~[classes/:na]
    ... 7 common frames omitted

这根本没有任何意义...很棒的是,我可以尝试在调试器上执行同一行,并且可以运行:

enter image description here

解决方法

SimpleDateFormat不是线程安全的。因此,在几乎所有情况下,将其用作静态常量并不是一个好主意。每次需要时最好创建一个新实例。只要看看here

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...