Heim > Java > javaLernprogramm > 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
Freigeben: 2024-11-06 07:22:02
Original
1006 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren
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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage