意外行为 DateFormat
Unexpected behavior 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
这完全没有意义...很棒的是我可以尝试在调试器上执行同一行,并且它有效:
SimpleDateFormat 不是线程安全的。因此,在几乎所有情况下,将其用作静态常量都不是一个好主意。每次需要时最好创建一个新实例。只看here
我在 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
这完全没有意义...很棒的是我可以尝试在调试器上执行同一行,并且它有效:
SimpleDateFormat 不是线程安全的。因此,在几乎所有情况下,将其用作静态常量都不是一个好主意。每次需要时最好创建一个新实例。只看here