Déterminer si une chaîne donnée adhère à un format de date spécifié est une tâche courante en Java . Cet article présente deux approches distinctes pour résoudre ce problème, sans recourir à des solutions d'expressions régulières.
La classe SimpleDateFormat fournit un moyen simple pour y parvenir. Voici comment cela peut être implémenté :
<code class="java">import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Main { public static void main(String[] args) { String format = "dd/MM/yyyy"; String input = "20130925"; Date date = null; try { SimpleDateFormat sdf = new SimpleDateFormat(format); date = sdf.parse(input); if (!input.equals(sdf.format(date))) { date = null; } } catch (ParseException ex) { // Invalid date format } boolean isValid = date != null; System.out.println("Is valid: " + isValid); } }</code>
Dans cette approche, l'instance SimpleDateFormat est utilisée pour analyser la chaîne d'entrée. Si l'analyse réussit et que la date résultante correspond à la chaîne d'origine, l'entrée est considérée comme valide. Dans le cas contraire, il est jugé invalide.
Pour Java 8 et supérieur, l'introduction de l'API Date-Time offre une interface plus moderne et plus robuste. approche :
<code class="java">import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.Locale; public class Main { public static void main(String[] args) { String format = "dd/MM/yyyy"; String input = "20130925"; Locale locale = Locale.ENGLISH; boolean isValid = isValidFormat(format, input, locale); System.out.println("Is valid: " + isValid); } public static boolean isValidFormat(String format, String input, Locale locale) { LocalDateTime ldt = null; DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format, locale); try { ldt = LocalDateTime.parse(input, formatter); String result = ldt.format(formatter); return result.equals(input); } catch (DateTimeParseException e) { try { LocalDate ld = LocalDate.parse(input, formatter); String result = ld.format(formatter); return result.equals(input); } catch (DateTimeParseException ex) { try { LocalTime lt = LocalTime.parse(input, formatter); String result = lt.format(formatter); return result.equals(input); } catch (DateTimeParseException e2) { // Debugging purposes e2.printStackTrace(); } } } return false; } }</code>
Cette solution utilise les capacités de formatage avancées de l'API Date-Time pour effectuer des vérifications plus précises. Il prend en compte la possibilité de varier les formats d'entrée, notamment les formats de date uniquement, d'heure uniquement et de date et heure complètes. La méthode isValidFormat permet une vérification flexible par rapport à différents paramètres régionaux.
Ces deux approches fournissent des solutions fiables pour vérifier si une chaîne est conforme à un format de date spécifique en Java. Le choix de la méthode dépend des exigences et de la version Java utilisée.
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!