Datumsstandardisierung

Datenbereinigung in Java

Dennis Lee

Software Engineer

Warum Datumsstandardisierung wichtig ist

  • Unterschiedliche Datumsformate: Schrägstriche, Bindestriche, Punkte
  • Inkonsistente Formate: schwer nach Datum zu sortieren oder zeitbasierte Metriken zu berechnen
  • Lösung: Daten standardisieren

 

 

Produktname Eingangsdatum
Paprika 3/1/25
Speiseöl 04-01-2025
Käse 2025.06.01
Datenbereinigung in Java

String-Daten in LocalDate konvertieren

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
// Erwartetes Datumsformat festlegen (M/d/yy)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M/d/yy");

// String in LocalDate umwandeln LocalDate date = LocalDate.parse("3/1/25", formatter); System.out.println("Aus String konvertiertes Datum: " + date);
Aus String konvertiertes Datum: 2025-03-01
Datenbereinigung in Java

Verschiedene Datumsformate standardisieren

String[] dates = {"3/1/25", "04-01-2025", "2025.06.01"}; // Eingabeformate
DateTimeFormatter[] formatters = { // Erwartete Formate in der Eingabe
    DateTimeFormatter.ofPattern("M/d/yy"), // Monat/Tag ohne führende Null
    DateTimeFormatter.ofPattern("MM-dd-yyyy"), // Monat/Tag mit führender Null
    DateTimeFormatter.ofPattern("yyyy.MM.dd")
};


System.out.println("Standardisierte Daten:"); for (int i = 0; i < dates.length; i++) { LocalDate date = LocalDate.parse(dates[i], formatters[i]); // In Datum umwandeln System.out.println("Format " + dates[i] + " as " + date1); }
Datenbereinigung in Java

Verschiedene Datumsformate: Ausgaben

Standardisierte Daten:
Format 3/1/25 as 2025-03-01
Format 04-01-2025 as 2025-04-01
Format 2025.06.01 as 2025-06-01
Datenbereinigung in Java

Daten für die Anzeige formatieren

// Beispiel-Eingabedatum
LocalDate date = LocalDate.parse("2025-03-01");

// Soll angezeigt werden als March 1, 2025
DateTimeFormatter displayFormat = DateTimeFormatter.ofPattern("MMMM d, yyyy");

// Datum im gewünschten Format ausgeben String formattedDate = date.format(displayFormat); System.out.println("Formatiertes Datum: " + formattedDate);
Formatiertes Datum: March 1, 2025
Datenbereinigung in Java

Arbeiten mit Zeitzonen

import java.time.ZoneId;
LocalDate date = LocalDate.parse("2025-03-01"); // Beispiel-Eingabedatum

ZonedDateTime nyTime = date.atStartOfDay(ZoneId.of("America/New_York")); // Gleichen Zeitpunkt in LA-Zeit umrechnen ZonedDateTime laTime = nyTime.withZoneSameInstant(ZoneId.of("America/Los_Angeles"));
System.out.println("New York time: " + nyTime); System.out.println("Los Angeles time: " + laTime);
New York time: 2025-03-01T00:00-05:00[America/New_York]
Los Angeles time: 2025-02-28T21:00-08:00[America/Los_Angeles]
Datenbereinigung in Java

Warum String-Manipulation bei Daten scheitert

// Falsch: Monat per String-Manipulation ermitteln
System.out.println("Beginnt 3/1/25 mit 3? " + "3/1/25".startsWith("3"));
System.out.println("Beginnt 03-15-25 mit 3? " + "03-15-25".startsWith("3"));

// Richtig: standardisierte Daten verwenden DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-d-yy"); LocalDate date = LocalDate.parse("03-15-25", formatter); // In Datum umwandeln System.out.println("Monat und Jahr von 03-15-25: " + date.getMonth() + " " + date.getYear()); // Monat/Jahr holen
Beginnt 3/1/25 mit 3? true
Beginnt 03-15-25 mit 3? false

Monat und Jahr von 03-15-25: MARCH 2025
Datenbereinigung in Java

Alles zusammenführen

Wichtige Importe

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.ZoneId;
  • Eingabeformat festlegen: DateTimeFormatter.ofPattern()
  • String in Datum umwandeln: LocalDate.parse()
  • Zeitzonen angeben/umrechnen: ZoneId.of(), .withZoneSameInstant()
  • Datum formatieren: .format()
  • Daten mit LocalDate.parse() parsen statt Strings zu manipulieren (.startsWith())
Datenbereinigung in Java

Lass uns üben!

Datenbereinigung in Java

Preparing Video For Download...