Maison Java javaDidacticiel Java peut-il analyser les dates de manière aussi flexible que le dateutil de Python ?

Java peut-il analyser les dates de manière aussi flexible que le dateutil de Python ?

Dec 16, 2024 pm 01:14 PM

Can Java Parse Dates as Flexibly as Python's dateutil?

Analyser n'importe quelle date en Java

Question :

Malgré ses éloges, Joda time nécessite les utilisateurs doivent spécifier manuellement les formats de date avant l’analyse. Existe-t-il une bibliothèque Java capable d'analyser un large éventail de formats de date sans effort, similaire à python-dateutil ?

Réponse :

Alors que la bibliothèque dateutil de Python excelle dans les dates flexibles l'analyse syntaxique, obtenir des résultats comparables en Java nécessite une approche pragmatique :

1. Correspondance d'expressions régulières :

Les expressions régulières constituent un moyen puissant d'identifier les modèles de format de date. En mappant les formats de date courants avec leurs expressions régulières correspondantes, il est possible de déterminer le format correct pour une chaîne de date donnée.

private static final Map<String, String> DATE_FORMAT_REGEXPS = new HashMap<>() {{
    put("^\d{8}$", "yyyyMMdd");
    put("^\d{1,2}-\d{1,2}-\d{4}$", "dd-MM-yyyy");
    put("^\d{4}-\d{1,2}-\d{1,2}$", "yyyy-MM-dd");
    // … (other format patterns)
}};

public static String determineDateFormat(String dateString) {
    for (String regexp : DATE_FORMAT_REGEXPS.keySet()) {
        if (dateString.toLowerCase().matches(regexp)) {
            return DATE_FORMAT_REGEXPS.get(regexp);
        }
    }
    return null; // Unknown format.
}
Copier après la connexion

2. Brute Forcing :

Si le format de date ne peut pas être déterminé via regex, la force brute peut être utilisée en dernier recours. Parcourez une collection de formats de date courants et essayez d'analyser la chaîne de date avec chacun d'eux.

public static Date parseDate(String dateString) {
    String dateFormat = determineDateFormat(dateString);
    if (dateFormat != null) {
        return new SimpleDateFormat(dateFormat).parse(dateString);
    }
    
    // Brute force using common formats
    for (String format : COMMON_DATE_FORMATS) {
        try {
            return new SimpleDateFormat(format).parse(dateString);
        } catch (ParseException e) {
            // Ignore parsing error
        }
    }
    
    throw new IllegalArgumentException("Invalid date format: " + dateString);
}
Copier après la connexion

En combinant la correspondance d'expressions régulières et la force brute, il est possible d'analyser un large éventail de formats de date en Java, bien que avec un peu plus d'effort que la bibliothèque dateutil de Python.

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)