这是我用来使用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 (即时)以外,我不能再使用它,因此只能寻求解决方案!
答案 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();