Heim  >  Artikel  >  Java  >  Wie validiere ich ein Datumszeichenfolgenformat in Java, ohne es in ein Datumsobjekt zu analysieren?

Wie validiere ich ein Datumszeichenfolgenformat in Java, ohne es in ein Datumsobjekt zu analysieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-06 07:22:02804Durchsuche

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

Java: Überprüfen des Datumsformats einer Zeichenfolge anhand einer angegebenen Anforderung

Frage:

Wie kann ich feststellen, ob eine bestimmte Zeichenfolge einem bestimmten Datumsformat in Java folgt? Ich möchte die Konvertierung der Zeichenfolge in ein Datumsobjekt vermeiden und mich ausschließlich auf die Validierung ihres Formats konzentrieren.

Antwort:

Java 8 :

Verwenden Sie die Klassen LocalDateTime, LocalDate und LocalTime aus der Java 8-API für Datum und Uhrzeit für eine umfassende Formatvalidierung.

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>

Verwendungsbeispiel:

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

Ausgabe:

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

Vor Java 8:

Verwenden Sie für frühere Versionen von Java SimpleDateFormat, um das Format zu validieren.

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>

Verwendungsbeispiel und Ausgabe:

<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

Beide Lösungen geben „true“ zurück, wenn die Zeichenfolge mit dem angegebenen Format übereinstimmt, andernfalls „false“, was eine zuverlässige Methode zur Validierung von Datumsformaten in Java darstellt.

Das obige ist der detaillierte Inhalt vonWie validiere ich ein Datumszeichenfolgenformat in Java, ohne es in ein Datumsobjekt zu analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn