如何解析具有毫秒和偏移量的时间?

时间:2016-08-18 14:56:57

标签: java java-time

我想将以下时间字符串解析为java.time

OffsetDateTime.parse("00:00:00.000+02:00", DateTimeFormatter.ISO_OFFSET_TIME);

结果:

java.time.format.DateTimeParseException: Text '00:00:00.000+02:00' could not be parsed: Unable to obtain OffsetDateTime from TemporalAccessor: {OffsetSeconds=7200},ISO resolved to 00:00 of type java.time.format.Parsed
    at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1918)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1853)
    at java.time.OffsetDateTime.parse(OffsetDateTime.java:402)

那么我怎么能解析这个时间,如果不是这样的话呢?

1 个答案:

答案 0 :(得分:4)

OffsetDateTime表示

  

带有偏移量的日期时间的不可变表示。 此类存储所有日期和时间字段,精度为纳秒,以及与UTC / Greenwich的偏移量。

但您正在尝试解析没有日期部分的日期字符串

"00:00:00.000+02:00"

解析无法从中提取日期,因此失败。

您似乎想要使用OffsetTime

  

此类存储所有时间字段,精度为纳秒,如   以及区域偏移。

如果您有OffsetDateTimeLocalDate,则可以将其转换为OffsetTime#atDate