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!