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
Libérer: 2024-12-18 08:41:11
original
151 Les gens l'ont consulté

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";
Copier après la connexion

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;
Copier après la connexion

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());
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal