OffsetDateTime.parse('2018-12-03T18:07:55') 抛出 DateTimeParseException

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

我相信这应该有效。授予它没有指定的偏移量,但不应该默认为 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 获取 OffsetDateTime:{},ISO 解析为 [=17 类型的 2018-12-03T18:07:55 =]

正如您所说,它失败了,因为格式中没有偏移量。要解决此问题,您可以使用相同的格式解析为 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);