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!