【发布时间】:2018-11-30 08:14:41
【问题描述】:
我正在以两种略有不同的格式解析同一个日期,但遇到了一个我不理解的错误。
标准ISO格式的字符串解析成功:
String s = "2018-04-17T22:57:29";
LocalDateTime date = LocalDateTime.parse(s, DateTimeFormatter.ISO_DATE_TIME); // OK
但是,当我添加 "Z" 后缀并使用 ISO_INSTANT 时:
s = "2018-04-17T22:57:29Z";
date = LocalDateTime.parse(s, DateTimeFormatter.ISO_INSTANT); // Fails
我得到以下异常:
Exception in thread "main" java.time.format.DateTimeParseException: Text '2018-04-17T22:57:29Z' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {MicroOfSecond=0, NanoOfSecond=0, MilliOfSecond=0, InstantSeconds=1524005849},ISO 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.LocalDateTime.parse(LocalDateTime.java:492)
at iplus.fwk.manifest.Test.main(Test.java:37)
Caused by: java.time.DateTimeException: Unable to obtain LocalDateTime from TemporalAccessor: {MicroOfSecond=0, NanoOfSecond=0, MilliOfSecond=0, InstantSeconds=1524005849},ISO of type java.time.format.Parsed
at java.time.LocalDateTime.from(LocalDateTime.java:461)
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 LocalDate from TemporalAccessor: {MicroOfSecond=0, NanoOfSecond=0, MilliOfSecond=0, InstantSeconds=1524005849},ISO of type java.time.format.Parsed
at java.time.LocalDate.from(LocalDate.java:368)
at java.time.LocalDateTime.from(LocalDateTime.java:456)
... 4 more
我对@987654321@定义的解读 表明第二次解析应该成功。我做错了什么?
【问题讨论】:
标签: java parsing datetime java-8 java-time