Heure Joda - La chaîne d'analyse java.lang.IllegalArgumentException
Ne faut-il pas String
formaté avec un DateTimeFormatter
pouvoir être analysée à l'aide de LocalDateTime.parse()
?
Test
DateTimeFormatter formatter = ISODateTimeFormat.dateTimeNoMillis()
LocalDateTime ldt = new LocalDateTime()
String val = ldt.toString(formatter)
System.out.println(val) //2013-03-26T13:10:46
//parse() throws java.lang.IllegalArgumentException: Invalid format: "2013-03-26T13:10:46" is too short
LocalDateTime nldt = LocalDateTime.parse(val, formatter)
source d'informationauteur Sérgio Michels
Vous devez vous connecter pour publier un commentaire.
Ont un look à la JavaDoc:
La clé semble être ici Le décalage horaire est de " Z "pour le zéro, et de la forme±HHmm" pour les non-zéro. Joda Time évidemment attend des informations de fuseau horaire pour
parse()
.J'ai ajouté
"Z"
à votre analysée date de Chaîne et il fonctionne mieux:De sortie est:
Le formateur met aussi l'erreur si
formatter.parseLocalDateTime(val)
est appelé, qui est ce queLocalDateTime.parse(...)
est d'appeler directement (c'est à dire, la naïve appel).Alors, c'est un facteur de la forme que devrait - qui dans ce cas est
yyyy-MM-dd'T'HH:mm:ssZZ
; en gros, c'est pour se plaindre que vous n'avez pas transmis un fuseau horaire.Je ne sais pas si cela est considéré comme un 'bug'; dans le court terme, évidemment un format personnalisé peut être utilisé, ou regarder ISODateTimeFormat.localDateOptionalTimeParser()qui semble être ce que vous voulez (c'est la valeur par défaut de l'analyseur utilisé par
LocalDateTime
).