Maison > Java > javaDidacticiel > Comment gérer le 'caractère de modèle illégal 'T'' lors de l'analyse des dates en Java ?

Comment gérer le 'caractère de modèle illégal 'T'' lors de l'analyse des dates en Java ?

Patricia Arquette
Libérer: 2024-12-08 00:27:10
original
1004 Les gens l'ont consulté

How to Handle

Analyse des chaînes de date avec un caractère illégal

Lorsque vous essayez d'analyser une chaîne de date en Java à l'aide de SimpleDateFormat, vous pouvez rencontrer l'exception "Modèle illégal caractère 'T'". Ce problème survient lorsque la chaîne de date contient un caractère « T », qui désigne la composante temporelle lorsque l'on suit la norme ISO 8601.

Cause de l'exception

Le SimpleDateFormat La classe interprète « T » comme un caractère spécial qui sépare les parties date et heure de la chaîne. Cependant, le modèle par défaut n'inclut pas « T » comme caractère, ce qui conduit à l'exception.

Solutions possibles

Il existe plusieurs façons de résoudre ce problème :

  1. Modifier le Modèle :

    • Ajoutez un guillemet simple des deux côtés du « T » dans la chaîne du motif. Cela échappe au caractère, lui permettant d'être interprété comme un littéral.
    • Exemple : SimpleDateFormat sdf = new SimpleDateFormat("aaaa-MM-jj'T'hh:mm:ssZ")
  2. Utiliser DateTimeFormatter (Java 8 ):

    • Commencez à utiliser la classe DateTimeFormatter moderne introduite dans Java 8.
    • Créez un formateur avec la date et l'heure appropriées modèles.
    • Exemple :

       DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ");
       Date date = formatter.parse("2010-10-02T12:23:23Z", LocalDateTime::from);
      Copier après la connexion
  3. Séparation manuelle des chaînes :

    • Si les approches ci-dessus ne fonctionnent pas, envisagez de diviser la chaîne de date manuellement et d'analyser les composants de date et d'heure. séparément.

Remarque :

Si la chaîne de date contient un « Z » final pour indiquer l'heure UTC, assurez-vous que le « La partie XXX' du modèle est incluse.

Exemple de code amélioré (avec échappement 'T'):

public static void main(String[] args) {
    String date = "2010-10-02T12:23:23Z";
    String pattern = "yyyy-MM-dd'T'hh:mm:ssXXX";
    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    try {
        Date d = sdf.parse(date);
        System.out.println(d.getYear());
    } catch (ParseException e) {
        e.printStackTrace();
    }
}
Copier après la connexion

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 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