带有Resoverstyle.STRICT的java.time中的错误

时间:2016-07-11 06:51:57

标签: java java-time

要么我不完全掌握java.time中的解析器样式,或者有错误。

我有以下代码(在Scala中):

import java.sql.Timestamp
import java.time.format.{DateTimeFormatter, ResolverStyle}
import java.time.ZonedDateTime

val str = "2016-07-11T05:45:44.552+04:00"
val iso1 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX")
val iso2 = iso1.withResolverStyle(ResolverStyle.STRICT)

Timestamp.from(ZonedDateTime.parse(str, iso1).toInstant) // works fine
Timestamp.from(ZonedDateTime.parse(str, iso2).toInstant) // nope!

第一个版本有效,第二个版本抛出以下异常java.time.format.DateTimeParseException。我不明白的是为什么。我认为日期和时间有效。

请参阅:https://docs.oracle.com/javase/8/docs/api/java/time/format/ResolverStyle.html#STRICT

1 个答案:

答案 0 :(得分:1)

这是不正确的ISO格式,只需使用DateTimeFormatter.ISO_DATE_TIME