java.time.format.DateTimeParseException:无法以 ddMMyyyyhhmmss 格式从 TemporalAccessor 获取 ZonedDateTime [重复]

2023-12-13

我在将字符串格式化为 ZonedDateTime 时遇到问题。

我的客户希望日期采用 ddMMyyyyhhmmss 等格式,没有分隔符或类似的内容。

这就是我到目前为止所做的

import java.time.format.DateTimeFormatter;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;


public class MyClass {
    public static void main(String args[]) {

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("ddMMyyyyhhmmss");
        String test = formatter
        .format(ZonedDateTime.now()).toString();
        System.out.println(test);
        ZonedDateTime a = ZonedDateTime.parse(test, formatter);
        System.out.println(a.toString());
    }
}

虽然它正确地生成了字符串,但在创建 LocalDateTime 变量的解析过程中发生了错误:

28032019100707

Exception in thread "main" java.time.format.DateTimeParseException: Text '28032019100707' could not be parsed: Unable to obtain ZonedDateTime from TemporalAccessor: {MilliOfSecond=0, MinuteOfHour=7, HourOfAmPm=10, NanoOfSecond=0, MicroOfSecond=0, SecondOfMinute=7},ISO resolved to 2019-03-28 of type java.time.format.Parsed
    at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1920)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1855)
    at java.time.ZonedDateTime.parse(ZonedDateTime.java:597)
    at MyClass.main(MyClass.java:14)
Caused by: java.time.DateTimeException: Unable to obtain ZonedDateTime from TemporalAccessor: {MilliOfSecond=0, MinuteOfHour=7, HourOfAmPm=10, NanoOfSecond=0, MicroOfSecond=0, SecondOfMinute=7},ISO resolved to 2019-03-28 of type java.time.format.Parsed
    at java.time.ZonedDateTime.from(ZonedDateTime.java:565)
    at java.time.format.Parsed.query(Parsed.java:226)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
    ... 2 more
Caused by: java.time.DateTimeException: Unable to obtain ZoneId from TemporalAccessor: {MilliOfSecond=0, MinuteOfHour=7, HourOfAmPm=10, NanoOfSecond=0, MicroOfSecond=0, SecondOfMinute=7},ISO resolved to 2019-03-28 of type java.time.format.Parsed
    at java.time.ZoneId.from(ZoneId.java:466)
    at java.time.ZonedDateTime.from(ZonedDateTime.java:553)
    ... 4 more
Command exited with non-zero status 1

在 Stack Overflow 上搜索,我看到同一问题的一些答案建议使用 LocalDateTime 类作为中间,然后解析为 ZonedDateTime,但它仍然不起作用,抛出相同的错误。

我还尝试更改使用以下过程初始化 DateTimeFormatter 的方式:

DateTimeFormatter formatter = new DateTimeFormatterBuilder().appendPattern("ddMMyyyyhhmmss")
                          .toFormatter()
                          .withZone(ZoneId.systemDefault());

但它仍然不起作用。我该如何修复它?


你要:

  String test = ZonedDateTime.now().format(formatter);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.time.format.DateTimeParseException:无法以 ddMMyyyyhhmmss 格式从 TemporalAccessor 获取 ZonedDateTime [重复] 的相关文章

随机推荐