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
Susan Sarandonoriginal
2024-12-08 22:54:13140parcourir

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;
    }
}

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!

Déclaration:
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