Standardisation des dates

Nettoyer des données en Java

Dennis Lee

Software Engineer

Pourquoi standardiser les dates

  • Formats de date variés : slashs, tirets, points
  • Formats incohérents : tri et calculs temporels difficiles
  • Solution : standardiser les dates

 

 

Nom du produit Date de réception
Poivron 3/1/25
Huile végétale 04-01-2025
Fromage 2025.06.01
Nettoyer des données en Java

Conversion de chaînes en LocalDate

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
// Spécifier le format attendu (M/d/yy)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M/d/yy");

// Convertir la chaîne en LocalDate LocalDate date = LocalDate.parse("3/1/25", formatter); System.out.println("Date convertie depuis la chaîne : " + date);
Date convertie depuis la chaîne : 2025-03-01
Nettoyer des données en Java

Standardiser des formats de date différents

String[] dates = {"3/1/25", "04-01-2025", "2025.06.01"}; // Formats d’entrée
DateTimeFormatter[] formatters = { // Formats attendus dans l’entrée
    DateTimeFormatter.ofPattern("M/d/yy"), // Mois/jour sans zéros
    DateTimeFormatter.ofPattern("MM-dd-yyyy"), // Mois/jour avec zéros
    DateTimeFormatter.ofPattern("yyyy.MM.dd")
};


System.out.println("Dates standardisées :"); for (int i = 0; i < dates.length; i++) { LocalDate date = LocalDate.parse(dates[i], formatters[i]); // Convertir en date System.out.println("Format " + dates[i] + " en " + date1); }
Nettoyer des données en Java

Standardiser des formats de date différents : sorties

Dates standardisées :
Format 3/1/25 en 2025-03-01
Format 04-01-2025 en 2025-04-01
Format 2025.06.01 en 2025-06-01
Nettoyer des données en Java

Mettre en forme des dates pour l’affichage

// Exemple de date d’entrée
LocalDate date = LocalDate.parse("2025-03-01");

// Afficher comme March 1, 2025
DateTimeFormatter displayFormat = DateTimeFormatter.ofPattern("MMMM d, yyyy");

// Mettre en forme la date au format souhaité String formattedDate = date.format(displayFormat); System.out.println("Date formatée : " + formattedDate);
Date formatée : March 1, 2025
Nettoyer des données en Java

Travailler avec les fuseaux horaires

import java.time.ZoneId;
LocalDate date = LocalDate.parse("2025-03-01"); // Exemple de date d’entrée

ZonedDateTime nyTime = date.atStartOfDay(ZoneId.of("America/New_York")); // Convertir le même instant en heure de LA ZonedDateTime laTime = nyTime.withZoneSameInstant(ZoneId.of("America/Los_Angeles"));
System.out.println("Heure de New York : " + nyTime); System.out.println("Heure de Los Angeles : " + laTime);
Heure de New York : 2025-03-01T00:00-05:00[America/New_York]
Heure de Los Angeles : 2025-02-28T21:00-08:00[America/Los_Angeles]
Nettoyer des données en Java

Pourquoi la manipulation de chaînes échoue avec les dates

// Incorrect : extraire le mois par manipulation de chaînes
System.out.println("3/1/25 commence par 3 ? " + "3/1/25".startsWith("3"));
System.out.println("03-15-25 commence par 3 ? " + "03-15-25".startsWith("3"));

// Correct : utiliser des dates standardisées DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-d-yy"); LocalDate date = LocalDate.parse("03-15-25", formatter); // Convertir en date System.out.println("Mois et année de 03-15-25 : " + date.getMonth() + " " + date.getYear()); // Obtenir mois/année
3/1/25 commence par 3 ? true
03-15-25 commence par 3 ? false

Mois et année de 03-15-25 : MARCH 2025
Nettoyer des données en Java

Synthèse

Importations clés

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.ZoneId;
  • Définir le modèle d’entrée : DateTimeFormatter.ofPattern()
  • Convertir une chaîne en date : LocalDate.parse()
  • Définir et convertir les fuseaux : ZoneId.of(), .withZoneSameInstant()
  • Mettre en forme une date : .format()
  • Analyser avec LocalDate.parse() plutôt que manipuler des chaînes (.startsWith())
Nettoyer des données en Java

Passons à la pratique !

Nettoyer des données en Java

Preparing Video For Download...