Maison > Java > javaDidacticiel > Comment SimpleDateFormat peut-il analyser efficacement les dates dans plusieurs formats ?

Comment SimpleDateFormat peut-il analyser efficacement les dates dans plusieurs formats ?

Susan Sarandon
Libérer: 2024-12-08 22:54:13
original
198 Les gens l'ont consulté

How Can SimpleDateFormat Efficiently Parse Dates in Multiple Formats?

Analyse de dates dans plusieurs formats à l'aide de SimpleDateFormat

L'analyse de dates peut être une tâche difficile, en particulier lorsqu'il s'agit de formats de date divers. Dans ce scénario, les utilisateurs ont saisi des dates dans des formats similaires mais pas identiques, y compris des variantes telles que « 9/09 » et « 9/1/2009 ».

Pour gérer efficacement cet écart, il est essentiel d'employer différents Objets SimpleDateFormat pour chaque modèle unique. Cependant, grâce à la façon dont SimpleDateFormat interprète les modèles numériques, nous pouvons minimiser le nombre de formats requis.

Plus précisément, pour les modèles avec des espaces réservés numériques ("M" pour mois et "y" pour année), le nombre minimum Le nombre de chiffres est spécifié par le nombre de lettres de modèle. Les nombres plus courts seront complétés par des zéros pour correspondre à cette longueur. Cependant, lors de l'analyse, le nombre de lettres de modèle n'est pas pris en compte, sauf s'il est nécessaire de séparer les champs adjacents.

En utilisant ces connaissances, nous pouvons définir les formats suivants :

  • "M/y " : couvre des dates telles que "9/09", "9/2009" et "09/2009"
  • "M/d/y" : gère les dates telles que "9/1/2009"
  • "M-d-y" : accepte les dates au format "9-1-2009"

Avec ces formats, nous pouvons créer une méthode pour analyser les dates dans les éléments suivants manière :

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

public class DateParser {

    public static void main(String[] args) {
        List<String> formatStrings = Arrays.asList("M/y", "M/d/y", "M-d-y");
        String[] dates = {"9/09", "9/2009", "09/2009", "9/1/2009", "9-1-2009"};

        for (String dateString : dates) {
            Date parsedDate = tryParse(dateString, formatStrings);
            if (parsedDate != null) {
                System.out.println("Parsed date: " + parsedDate);
            } else {
                System.out.println("Unable to parse date: " + dateString);
            }
        }
    }

    public static Date tryParse(String dateString, List<String> formatStrings) {
        for (String formatString : formatStrings) {
            try {
                return new SimpleDateFormat(formatString).parse(dateString);
            } catch (ParseException e) {
                // Do nothing and continue to the next format
            }
        }

        return null;
    }
}
Copier après la connexion

En parcourant les chaînes de format spécifiées du moins restrictif au plus restrictif, cette méthode analyse chaque chaîne de date et renvoie la première date analysée avec succès. Cette approche gère efficacement les différents formats de date sans duplication de code inutile.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal