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 » » ?
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!