Либо я не совсем понимаю, что делает стиль распознавателя в java.time
, или есть ошибка.Ошибка в java.time с Resoverstyle.STRICT
У меня есть следующий код (в 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
ideone для стека; https://ideone.com/5dzPsP, вам нужно использовать «u» в течение года в строгом режиме, см. дубликат. –