Maison >Java >javaDidacticiel >Pourquoi SimpleDateFormat renvoie-t-il une « date non analysable » ?

Pourquoi SimpleDateFormat renvoie-t-il une « date non analysable » ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-01 02:22:09318parcourir

Why Does SimpleDateFormat Throw

Dates non analysables avec SimpleDateFormat : spécifiez les paramètres régionaux ou utilisez DateTimeFormatter

Problème :
Lors de l'utilisation de SimpleDateFormat pour analyser les dates, vous pouvez rencontrer l'erreur "java.text.ParseException : date non analysable", en particulier lorsque les paramètres régionaux ne sont pas spécifiés.

Explication :
SimpleDateFormat nécessite des paramètres régionaux pour analyser correctement les dates. Si aucun n'est spécifié, il utilise les paramètres régionaux par défaut du système, qui peuvent ne pas correspondre au format analysé.

Solution :

  1. Toujours spécifier le locale : Utilisez la surcharge du constructeur de SimpleDateFormat qui accepte un argument Locale. Par exemple :
SimpleDateFormat dtfmt = new SimpleDateFormat("dd MMM yyyy hh:mm a", Locale.ENGLISH);
  1. Utilisez l'API DateTimeFormatter moderne :
  • DateTimeFormatter est l'API préférée pour le formatage et analyse des dates et des heures.
  • Il offre une plus grande flexibilité et un plus grand contrôle sur le formatage, y compris la possibilité de spécifier une locale.

Démo avec DateTimeFormatter :

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        String strDateTime = "24 Oct 2016 7:31 pm";
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("d MMM uuuu h:m a").withLocale(Locale.ENGLISH);
        LocalDateTime ldt = LocalDateTime.parse(strDateTime, dtf);
        System.out.println(ldt); // prints 2016-10-24T19:31
    }
}

Remarque :

  • Le locale par défaut spécifiée par DateTimeFormatter utilise la version actuelle du système locale.
  • Toujours spécifiez explicitement les paramètres régionaux pour éviter d'éventuels problèmes d'analyse.

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