Java LocalDateTime analyse syntaxique

Simon Laing:

Pourquoi puis-je analyser une chaîne de date heure en Java avec une heure non valide? Qu'est-ce que je manqué ou besoin de faire pour veiller à ce qu'il jette correctement une erreur.

Le code suivant ne jette pas une erreur, où il se doit?

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss");
LocalDateTime aFormattedDate = LocalDateTime.parse("2019-01-01T24:00:00", dateTimeFormatter); // returns  2019-01-02T00:00:00, should throw an error

Spécification de l'heure 25, ou y compris milliseconde ou tout autre composant de temps ne cause parseà une erreur.

Tandis que

LocalDateTime aDate = LocalDateTime.parse("2019-01-01T24:00:00"); //throws an error

Ne jetez une erreur - au sujet HourOfDay doit être compris entre 0 et 23 - comme prévu

Charles Dowbecki:

ResolverStyle

Parce que DateTimeFormatter.ofPattern()par défaut ResolverStyle.SMARTsi le style de résolveur n'est pas spécifié. SMARTpermet une certaine conversionse.g. 24:00:00sera convertie au lendemain , mais 24:00:01jetteront une exception. Selon le ENUM javadoc:

Style de dates et heures résoudre dans une puce ou intelligente, de manière.

En utilisant la résolution intelligente interprétera la valeur par défaut raisonnable pour chaque champ, ce qui peut être le même que strict, le même que clément, ou un troisième comportement. Les champs individuels interpréteront différemment.

Par exemple, la résolution de l'année mois et le jour de mois dans le système de calendrier ISO en utilisant le mode intelligent fera en sorte que le jour de mois est de 1 à 31, la conversion de valeur au-delà de la dernière valide jour de mois pour être le dernier jour de mois valide.

LocalDateTime.parse()utilise ResolveStyle.STRICTsous le capot qui le rend équivalent à:

DateTimeFormatter fmt = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss")
                                         .withResolverStyle(ResolverStyle.STRICT);
LocalDateTime.parse("2019-01-01T24:00:00", fmt); // DateTimeParseException

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=188412&siteId=1
conseillé
Classement