Maison >Java >javaDidacticiel >Comment valider un format de chaîne de date en Java sans analyser un objet date ?

Comment valider un format de chaîne de date en Java sans analyser un objet date ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-06 07:22:021011parcourir

How to Validate a Date String Format in Java without Parsing to a Date Object?

Java : Vérification du format de date d'une chaîne par rapport à une exigence spécifiée

Question :

Comment puis-je déterminer si une chaîne donnée suit un format de date spécifique en Java ? Je veux éviter de convertir la chaîne en objet date et me concentrer uniquement sur la validation de son format.

Réponse :

Java 8 :

Utilisez les classes LocalDateTime, LocalDate et LocalTime de l'API de date et d'heure Java 8 pour une validation complète du format.

Code :

<code class="java">public static boolean isValidFormat(String format, String value, Locale locale) {
    LocalDateTime ldt = null;
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format, locale);

    try {
        ldt = LocalDateTime.parse(value, formatter);
        String result = ldt.format(formatter);
        return result.equals(value);
    } catch (DateTimeParseException e) {
        try {
            LocalDate ld = LocalDate.parse(value, formatter);
            String result = ld.format(formatter);
            return result.equals(value);
        } catch (DateTimeParseException exp) {
            try {
                LocalTime lt = LocalTime.parse(value, formatter);
                String result = lt.format(formatter);
                return result.equals(value);
            } catch (DateTimeParseException e2) {
                // Handle exceptions for debugging purposes
            }
        }
    }

    return false;
}</code>

Exemple d'utilisation :

<code class="java">System.out.println("isValid - dd/MM/yyyy with 20130925 = " + isValidFormat("dd/MM/yyyy", "20130925", Locale.ENGLISH));
System.out.println("isValid - dd/MM/yyyy with 25/09/2013 = " + isValidFormat("dd/MM/yyyy", "25/09/2013", Locale.ENGLISH));
System.out.println("isValid - dd/MM/yyyy with 25/09/2013 12:13:50 = " + isValidFormat("dd/MM/yyyy", "25/09/2013  12:13:50", Locale.ENGLISH));
System.out.println("isValid - yyyy-MM-dd with 2017-18--15 = " + isValidFormat("yyyy-MM-dd", "2017-18--15", Locale.ENGLISH));</code>

Sortie :

isValid - dd/MM/yyyy with 20130925 = false
isValid - dd/MM/yyyy with 25/09/2013 = true
isValid - dd/MM/yyyy with 25/09/2013 12:13:50 = false
isValid - yyyy-MM-dd with 2017-18--15 = false

Pré-Java 8 :

Pour les versions antérieures de Java, utilisez SimpleDateFormat pour valider le format.

Code :

<code class="java">public static boolean isValidFormat(String format, String value) {
    Date date = null;
    try {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        date = sdf.parse(value);
        if (!value.equals(sdf.format(date))) {
            date = null;
        }
    } catch (ParseException ex) {
        ex.printStackTrace();
    }
    return date != null;
}</code>

Exemple d'utilisation et sortie :

<code class="java">System.out.println("isValid - dd/MM/yyyy with 20130925 = " + isValidFormat("dd/MM/yyyy", "20130925"));
System.out.println("isValid - dd/MM/yyyy with 25/09/2013 = " + isValidFormat("dd/MM/yyyy", "25/09/2013"));
System.out.println("isValid - dd/MM/yyyy with 25/09/2013 12:13:50 = " + isValidFormat("dd/MM/yyyy", "25/09/2013  12:13:50"));</code>
isValid - dd/MM/yyyy with 20130925 = false
isValid - dd/MM/yyyy with 25/09/2013 = true
isValid - dd/MM/yyyy with 25/09/2013 12:13:50 = false

Les deux solutions renvoient vrai si la chaîne correspond au format spécifié et faux dans le cas contraire, fournissant une méthode fiable pour valider les formats de date en Java.

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