2016-07-11 4 views
2

Либо я не совсем понимаю, что делает стиль распознавателя в 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

+1

ideone для стека; https://ideone.com/5dzPsP, вам нужно использовать «u» в течение года в строгом режиме, см. дубликат. –

ответ

1

Это неверный формат ISO, просто используйте DateTimeFormatter.ISO_DATE_TIME.

Смежные вопросы