Java LocalDateTime格式化程序问题



我目前正在使用Java LocalDateTime格式化程序,我想从字符串中解析日期。我把问题归结为下面的代码。这是正确地使用Formatter来创建这种模式的String,但它不能读取完全相同的String。我想知道为什么会这样。

public static void main(String args[]) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
String stringTime = LocalDateTime.now().format(formatter);
System.out.println(stringTime);
LocalDateTime dateTime = LocalDateTime.parse(stringTime, formatter);
System.out.println(dateTime);
}

让我更困惑的是,如果我在模式中插入一个字符,就像下面的代码一样,函数工作并将日期转换为字符串并返回。

public static void main(String args[]) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmm-ssSSS");
String stringTime = LocalDateTime.now().format(formatter);
System.out.println(stringTime);
LocalDateTime dateTime = LocalDateTime.parse(stringTime, formatter);
System.out.println(dateTime);
}

得到如下stacktrace

线程"main"异常java.time.format.DateTimeParseException:文本'20220421154548090'无法在索引0处解析java.time.format.DateTimeFormatter.parseResolved0 (DateTimeFormatter.java: 1949)java.time.format.DateTimeFormatter.parse (DateTimeFormatter.java: 1851)java.time.LocalDateTime.parse (LocalDateTime.java: 492)

如果你能给我一些建议,我将非常高兴。

在@deHaar的请求之后,我尝试了不同的Java版本。在zulu-8中出现了这个问题,在zulu-17等更高版本中,代码工作得很好。所以我必须使用更高的版本或找到一个解决方案。谢谢你的回复。

最新更新