【问题标题】:OffsetDateTime.parse('2018-12-03T18:07:55') throwing DateTimeParseExceptionOffsetDateTime.parse('2018-12-03T18:07:55') 抛出 DateTimeParseException
【发布时间】:2019-07-01 23:18:16
【问题描述】:

我相信这应该可行。假设它没有指定的偏移量,但不应该默认为 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 解析为 java 类型的 2018-12-03T18:07:55 .time.format.Parsed

【问题讨论】:

    标签: java-time


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-10-15
      • 1970-01-01
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      • 2021-08-10
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      相关资源
      最近更新 更多