Maison >Java >javaDidacticiel >Comment analyser une chaîne ISO 8601 avec un deux-points manquant dans le décalage par rapport à la date Java 8 ?

Comment analyser une chaîne ISO 8601 avec un deux-points manquant dans le décalage par rapport à la date Java 8 ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-04 11:16:29720parcourir

How to Parse an ISO 8601 String with a Missing Colon in the Offset to Java 8 Date?

Analyse d'une chaîne ISO 8601 avec un deux-points manquant en décalage avec la date Java 8

Problème :

La méthode ZonedDateTime.parse() de Java 8 ne parvient pas à analyser une chaîne de date au format ISO 8601 sans deux-points dans le décalage, telle que "2018-02-13T10:20:12.120 0000."

Solution :

Jusqu'à ce que le bug soit corrigé (Java 8 à 121) :

Utilisez un DateTimeFormatter avec un modèle personnalisé pour spécifier les deux points manquants dans le décalage :

<code class="java">String input = "2018-02-13T10:20:12.120+0000";
DateTimeFormatter f = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSX");
OffsetDateTime odt = OffsetDateTime.parse(input, f);</code>

Lorsque le bug est corrigé :

Appelez simplement OffsetDateTime.parse() avec la chaîne ISO 8601 sans motif :

<code class="java">OffsetDateTime odt = OffsetDateTime.parse("2018-02-13T10:20:12.120+0000");</code>

Détails :

  • La classe OffsetDateTime représente une date avec un décalage par rapport à UTC, qui est approprié pour la chaîne d'entrée.
  • Par par défaut, java.time utilise les formats ISO 8601 pour l'analyse, mais il attend deux points dans le décalage.
  • Le DateTimeFormatter permet la personnalisation, vous permettant de spécifier la présence des deux points.
  • Pour Pour éviter toute ambiguïté, il est recommandé d'utiliser les deux points dans les décalages, de toujours indiquer les heures et les minutes (même si zéro) et de mettre zéro à gauche d'une minute à un chiffre.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn