OffsetDateTime.parse('2018-12-03T18:07:55')引发DateTimeParseException

时间:2019-02-07 18:38:41

标签: java.time

我认为这应该可行。授予它没有指定的偏移量,但是那不应该默认为UTC吗?如果没有,该如何将这样的字符串解析为OffsetDateTime?

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd['T'[HH:mm:ss][.SSSSS]][z][x]");
String datetime = "2018-12-03T18:07:55";
OffsetDateTime odt = OffsetDateTime.parse(datetime, formatter);

抛出异常: java.time.format.DateTimeParseException:无法解析文本“ 2018-12-03T18:07:55”:无法从TemporalAccessor获取{set} OffsetDateTime:ISO解析为Java类型的2018-12-03T18:07:55 .time.format.Parsed

1 个答案:

答案 0 :(得分:0)

正如您所说,它失败了,因为格式没有偏移量。要解决此问题,您可以使用相同的格式来解析为LocalDateTime,然后与ZoneOffset组合以创建OffsetDateTime

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd['T'[HH:mm:ss][.SSSSS]][z][x]");
String datetime = "2018-12-03T18:07:55";

LocalDateTime ldt = LocalDateTime.parse(datetime, formatter);
OffsetDateTime odt = OffsetDateTime.of(ldt, ZoneOffset.UTC);

System.out.println(odt);