Datums standaardiseren

Data opschonen in Java

Dennis Lee

Software Engineer

Waarom datums standaardiseren belangrijk is

  • Verschillende datumformaten: slashes, streepjes, punten
  • Inconsistent: lastig sorteren of tijdsmetrics berekenen
  • Oplossing: datums standaardiseren

 

 

Productnaam Ontvangen op
Paprika 3/1/25
Plantaardige olie 04-01-2025
Kaas 2025.06.01
Data opschonen in Java

Strings omzetten naar LocalDate

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
// Verwacht datumformaat opgeven (M/d/yy)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M/d/yy");

// String naar LocalDate converteren LocalDate date = LocalDate.parse("3/1/25", formatter); System.out.println("Datum geconverteerd van string: " + date);
Date converted from string: 2025-03-01
Data opschonen in Java

Verschillende datumformaten standaardiseren

String[] dates = {"3/1/25", "04-01-2025", "2025.06.01"}; // Invoerdatumformaten
DateTimeFormatter[] formatters = { // Verwachte formaten in de invoer
    DateTimeFormatter.ofPattern("M/d/yy"), // Geen nulvulling voor maand en dag
    DateTimeFormatter.ofPattern("MM-dd-yyyy"), // Met nulvulling voor maand en dag
    DateTimeFormatter.ofPattern("yyyy.MM.dd")
};


System.out.println("Gestandaardiseerde datums:"); for (int i = 0; i < dates.length; i++) { LocalDate date = LocalDate.parse(dates[i], formatters[i]); // Converteren naar datum System.out.println("Format " + dates[i] + " as " + date1); }
Data opschonen in Java

Verschillende datumformaten: output

Gestandaardiseerde datums:
Format 3/1/25 as 2025-03-01
Format 04-01-2025 as 2025-04-01
Format 2025.06.01 as 2025-06-01
Data opschonen in Java

Datums opmaken voor weergave

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

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

// Datum opmaken in gewenst formaat String formattedDate = date.format(displayFormat); System.out.println("Formatted date: " + formattedDate);
Formatted date: March 1, 2025
Data opschonen in Java

Werken met tijdzones

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

ZonedDateTime nyTime = date.atStartOfDay(ZoneId.of("America/New_York")); // Zet hetzelfde moment om naar LA-tijd 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]
Data opschonen in Java

Waarom strings bewerken faalt bij datums

// Fout: maand ophalen met stringmanipulatie
System.out.println("Begint 3/1/25 met 3? " + "3/1/25".startsWith("3"));
System.out.println("Begint 03-15-25 met 3? " + "03-15-25".startsWith("3"));

// Goed: gestandaardiseerde datums gebruiken DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-d-yy"); LocalDate date = LocalDate.parse("03-15-25", formatter); // Converteren naar datum System.out.println("Maand en jaar van 03-15-25: " + date.getMonth() + " " + date.getYear()); // Haal maand/jaar op
Begint 3/1/25 met 3? true
Begint 03-15-25 met 3? false

Maand en jaar van 03-15-25: MARCH 2025
Data opschonen in Java

Alles samenbrengen

Belangrijke imports

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.ZoneId;
  • Invoerpatroon opgeven: DateTimeFormatter.ofPattern()
  • String naar datum: LocalDate.parse()
  • Tijdzones opgeven en omzetten: ZoneId.of(), .withZoneSameInstant()
  • Datum opmaken: .format()
  • Parse met LocalDate.parse() i.p.v. strings manipuleren (.startsWith())
Data opschonen in Java

Laten we oefenen!

Data opschonen in Java

Preparing Video For Download...