Standarisasi tanggal

Pembersihan Data di Java

Dennis Lee

Software Engineer

Pentingnya standarisasi tanggal

  • Format tanggal beragam: garis miring, strip, titik
  • Tak konsisten: sulit mengurutkan atau hitung metrik berbasis waktu
  • Solusi: standarkan tanggal

 

 

Product Name Date Received
Bell Pepper 3/1/25
Vegetable Oil 04-01-2025
Cheese 2025.06.01
Pembersihan Data di Java

Mengonversi string tanggal ke LocalDate

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
// Tentukan format tanggal yang diharapkan (M/d/yy)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M/d/yy");

// Ubah string ke LocalDate LocalDate date = LocalDate.parse("3/1/25", formatter); System.out.println("Tanggal dari string: " + date);
Tanggal dari string: 2025-03-01
Pembersihan Data di Java

Menstandarkan berbagai format tanggal

String[] dates = {"3/1/25", "04-01-2025", "2025.06.01"}; // Format input
DateTimeFormatter[] formatters = { // Format yang diharapkan di input
    DateTimeFormatter.ofPattern("M/d/yy"), // Bulan/hari tanpa nol depan
    DateTimeFormatter.ofPattern("MM-dd-yyyy"), // Bulan/hari dengan nol depan
    DateTimeFormatter.ofPattern("yyyy.MM.dd")
};


System.out.println("Tanggal terstandar:"); for (int i = 0; i < dates.length; i++) { LocalDate date = LocalDate.parse(dates[i], formatters[i]); // Ubah ke tanggal System.out.println("Format " + dates[i] + " sebagai " + date1); }
Pembersihan Data di Java

Menstandarkan berbagai format: output

Tanggal terstandar:
Format 3/1/25 sebagai 2025-03-01
Format 04-01-2025 sebagai 2025-04-01
Format 2025.06.01 sebagai 2025-06-01
Pembersihan Data di Java

Memformat tanggal untuk tampilan

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

// Ingin ditampilkan sebagai March 1, 2025
DateTimeFormatter displayFormat = DateTimeFormatter.ofPattern("MMMM d, yyyy");

// Format tanggal sesuai tampilan String formattedDate = date.format(displayFormat); System.out.println("Tanggal terformat: " + formattedDate);
Tanggal terformat: March 1, 2025
Pembersihan Data di Java

Bekerja dengan zona waktu

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

ZonedDateTime nyTime = date.atStartOfDay(ZoneId.of("America/New_York")); // Ubah momen yang sama ke waktu LA ZonedDateTime laTime = nyTime.withZoneSameInstant(ZoneId.of("America/Los_Angeles"));
System.out.println("Waktu New York: " + nyTime); System.out.println("Waktu Los Angeles: " + laTime);
Waktu New York: 2025-03-01T00:00-05:00[America/New_York]
Waktu Los Angeles: 2025-02-28T21:00-08:00[America/Los_Angeles]
Pembersihan Data di Java

Mengapa manipulasi string gagal untuk tanggal

// Salah: Mengekstrak bulan dengan manipulasi string
System.out.println("Apakah 3/1/25 diawali 3? " + "3/1/25".startsWith("3"));
System.out.println("Apakah 03-15-25 diawali 3? " + "03-15-25".startsWith("3"));

// Benar: Gunakan tanggal yang distandarkan DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-d-yy"); LocalDate date = LocalDate.parse("03-15-25", formatter); // Ubah ke tanggal System.out.println("Bulan dan tahun 03-15-25: " + date.getMonth() + " " + date.getYear()); // Ambil bulan/tahun
Apakah 3/1/25 diawali 3? true
Apakah 03-15-25 diawali 3? false

Bulan dan tahun 03-15-25: MARCH 2025
Pembersihan Data di Java

Menggabungkan semuanya

Impor utama

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.ZoneId;
  • Tentukan pola input: DateTimeFormatter.ofPattern()
  • Ubah string ke tanggal: LocalDate.parse()
  • Tentukan/konversi zona waktu: ZoneId.of(), .withZoneSameInstant()
  • Format tanggal: .format()
  • Parsing dengan LocalDate.parse(), bukan memanipulasi string (.startsWith())
Pembersihan Data di Java

Ayo berlatih!

Pembersihan Data di Java

Preparing Video For Download...