使用Instant.parse解析2018-05-01T00:00:00日期时出错

时间:2020-04-24 13:14:07

标签: java datetime java.time.instant

这是我用来使用Instant.parse解析字符串的代码,

String date = "2018-05-01T00:00:00";
Instant.parse(date)

并出现错误

java.time.format.DateTimeParseException: Text '2018-05-01T00:00:00' could not be parsed at index 19
        at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
        at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
        at java.time.Instant.parse(Instant.java:395)

除了 Instant (即时)以外,我不能再使用它,因此只能寻求解决方案!

1 个答案:

答案 0 :(得分:5)

Instant.parse仅接受ISO INSTANT FORMAT

中的字符串

从诸如2007-12-03T10:15:30.00Z之类的文本字符串中获取Instant实例。

该字符串必须表示UTC中的有效时刻,并使用DateTimeFormatter.ISO_INSTANT进行解析。

但是您拥有的字符串代表LocalDateTime,因此将其解析为LocalDateTime,然后转换为Instant

ISO-8601日历系统中没有时区的日期时间,例如2007-12-03T10:15:30。

LocalDateTime dateTime = LocalDateTime.parse(date);
Instant instant = dateTime.atZone(ZoneId.of("America/New_York")).toInstant();