Maison >Java >javaDidacticiel >Pourquoi l'analyse d'une chaîne de date en Java génère-t-elle un « caractère de modèle illégal « T » » ?

Pourquoi l'analyse d'une chaîne de date en Java génère-t-elle un « caractère de modèle illégal « T » » ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-18 08:41:11149parcourir

Why Does Parsing a Date String in Java Throw

Caractère de modèle illégal 'T' lors de l'analyse d'une chaîne de date en java.util.Date

Analyse d'une chaîne de date en java.util. L'objet Date nécessite un modèle qui adhère à des règles spécifiques. Un modèle courant est "aaaa-MM-jjThh:mm:ssZ", qui représente les dates au format ISO 8601.

Problème :
Lors de l'utilisation du modèle spécifié, une exception est lancé avec le message "java.lang.IllegalArgumentException : caractère de modèle illégal 'T'."

Raison :
Le 'T' dans le motif représente un séparateur entre les composants de date et d'heure. Cependant, dans SimpleDateFormat de Java, le caractère « T » doit être échappé avec des guillemets simples de chaque côté pour être reconnu correctement.

Solution 1 : Échapper « T » dans le motif
Pour résoudre le problème en utilisant le modèle d'origine, échappez le caractère « T » comme suit :

String pattern = "yyyy-MM-dd'T'hh:mm:ssZ";

Solution 2 : Utilisez ISO_8601_24H_FULL_FORMAT
Vous pouvez également utiliser la constante ISO_8601_24H_FULL_FORMAT prédéfinie fournie par la classe Q2597083 :

String pattern = Q2597083.ISO_8601_24H_FULL_FORMAT;

Pour Java 8 et supérieur :
Pour Java 8 et ci-dessus, il est recommandé d'utiliser la classe DateTimeFormatter au lieu de SimpleDateFormat et Instant au lieu de Date. Voici un exemple :

import java.time.Instant;
import java.time.format.DateTimeFormatter;

String dateString = "2010-10-02T12:23:23Z";
DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME;
Instant d = Instant.parse(dateString);
System.out.println(d.getYear());

En utilisant ces solutions, vous pouvez analyser avec succès les chaînes de date au format ISO 8601 sans rencontrer l'exception « Caractère de modèle illégal 'T' ».

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