unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
Date & Time

Date & Time #

Pengelolaan tanggal dan waktu (datetime) dalam bahasa pemrograman Java adalah aspek penting dalam banyak aplikasi, seperti aplikasi bisnis, sistem pemesanan, kalender, dan banyak lagi. Java memiliki berbagai kelas dan pustaka untuk bekerja dengan datetime, terutama di paket java.time, yang diperkenalkan di Java 8 sebagai bagian dari API Date and Time yang baru.

Kelas Utama #

  1. LocalDate: Mewakili tanggal (tanpa waktu) dalam format YYYY-MM-DD.
  2. LocalTime: Mewakili waktu (tanpa tanggal) dalam format HH:MM:SS.
  3. LocalDateTime: Mewakili kombinasi dari tanggal dan waktu tanpa zona waktu.
  4. ZonedDateTime: Mewakili tanggal dan waktu dengan zona waktu.
  5. Instant: Mewakili titik waktu tertentu dalam UTC (Universal Time Coordinated).
  6. Duration dan Period: Mewakili durasi waktu dan periode waktu antara dua objek datetime.

LocalDate #

LocalDate digunakan untuk mewakili tanggal tanpa komponen waktu. Ini sering digunakan untuk keperluan seperti menyimpan tanggal lahir, tanggal pemesanan, atau tanggal transaksi.

Operasi Standar #

  • Membuat Tanggal Saat Ini:

    LocalDate today = LocalDate.now();
    System.out.println("Tanggal hari ini: " + today);
    
  • Membuat Tanggal Spesifik:

    LocalDate specificDate = LocalDate.of(2024, 8, 24);
    System.out.println("Tanggal spesifik: " + specificDate);
    
  • Mengambil Komponen Tanggal:

    int year = today.getYear();
    int month = today.getMonthValue();
    int day = today.getDayOfMonth();
    System.out.println("Tahun: " + year + ", Bulan: " + month + ", Hari: " + day);
    
  • Menambah atau Mengurangi Hari, Bulan, atau Tahun:

    LocalDate nextWeek = today.plusWeeks(1);
    LocalDate lastMonth = today.minusMonths(1);
    System.out.println("Minggu depan: " + nextWeek);
    System.out.println("Bulan lalu: " + lastMonth);
    
  • Membandingkan Tanggal:

    boolean isBefore = specificDate.isBefore(today);
    boolean isAfter = specificDate.isAfter(today);
    boolean isEqual = specificDate.isEqual(today);
    System.out.println("Tanggal spesifik sebelum hari ini: " + isBefore);
    

LocalTime #

LocalTime digunakan untuk mewakili waktu tanpa tanggal. Cocok untuk menyimpan informasi seperti waktu buka atau tutup, jadwal rapat, dll.

Operasi Standar #

  • Membuat Waktu Saat Ini:

    LocalTime now = LocalTime.now();
    System.out.println("Waktu sekarang: " + now);
    
  • Membuat Waktu Spesifik:

    LocalTime specificTime = LocalTime.of(14, 30);
    System.out.println("Waktu spesifik: " + specificTime);
    
  • Mengambil Komponen Waktu:

    int hour = now.getHour();
    int minute = now.getMinute();
    int second = now.getSecond();
    System.out.println("Jam: " + hour + ", Menit: " + minute + ", Detik: " + second);
    
  • Menambah atau Mengurangi Jam, Menit, atau Detik:

    LocalTime inAnHour = now.plusHours(1);
    LocalTime thirtyMinutesAgo = now.minusMinutes(30);
    System.out.println("Satu jam dari sekarang: " + inAnHour);
    System.out.println("30 menit yang lalu: " + thirtyMinutesAgo);
    
  • Membandingkan Waktu:

    boolean isBefore = specificTime.isBefore(now);
    boolean isAfter = specificTime.isAfter(now);
    System.out.println("Waktu spesifik sebelum sekarang: " + isBefore);
    

LocalDateTime #

LocalDateTime menggabungkan LocalDate dan LocalTime menjadi satu objek untuk mewakili tanggal dan waktu tanpa zona waktu.

Operasi Standar: #

  • Membuat Tanggal dan Waktu Saat Ini:

    LocalDateTime now = LocalDateTime.now();
    System.out.println("Tanggal dan waktu sekarang: " + now);
    
  • Membuat Tanggal dan Waktu Spesifik:

    LocalDateTime specificDateTime = LocalDateTime.of(2024, 8, 24, 14, 30);
    System.out.println("Tanggal dan waktu spesifik: " + specificDateTime);
    
  • Menambah atau Mengurangi Tanggal dan Waktu:

    LocalDateTime nextYear = now.plusYears(1);
    LocalDateTime lastHour = now.minusHours(1);
    System.out.println("Satu tahun dari sekarang: " + nextYear);
    System.out.println("Satu jam yang lalu: " + lastHour);
    
  • Mengonversi ke LocalDate atau LocalTime:

    LocalDate datePart = specificDateTime.toLocalDate();
    LocalTime timePart = specificDateTime.toLocalTime();
    System.out.println("Bagian tanggal: " + datePart);
    System.out.println("Bagian waktu: " + timePart);
    

ZonedDateTime #

ZonedDateTime mewakili tanggal dan waktu dengan zona waktu tertentu. Ini sangat berguna untuk aplikasi yang beroperasi di berbagai zona waktu.

Operasi Standar #

  • Membuat ZonedDateTime dari Tanggal dan Waktu Saat Ini di Zona Waktu Spesifik:

    ZonedDateTime zdtNow = ZonedDateTime.now();
    ZonedDateTime zdtParis = ZonedDateTime.now(ZoneId.of("Europe/Paris"));
    System.out.println("Tanggal dan waktu sekarang (default): " + zdtNow);
    System.out.println("Tanggal dan waktu di Paris: " + zdtParis);
    
  • Mengonversi LocalDateTime ke ZonedDateTime:

    ZonedDateTime zdtSpecific = specificDateTime.atZone(ZoneId.of("Asia/Jakarta"));
    System.out.println("Tanggal dan waktu spesifik di Jakarta: " + zdtSpecific);
    

Instant #

Instant mewakili titik waktu tertentu dalam UTC (Universal Time Coordinated). Ini berguna untuk operasi waktu di tingkat yang sangat rendah atau dasar.

Operasi Standar: #

  • Membuat Instant Saat Ini:

    Instant now = Instant.now();
    System.out.println("Waktu saat ini dalam UTC: " + now);
    
  • Menambah atau Mengurangi Waktu pada Instant:

    Instant nextMinute = now.plusSeconds(60);
    Instant lastHour = now.minusSeconds(3600);
    System.out.println("Satu menit dari sekarang (UTC): " + nextMinute);
    System.out.println("Satu jam yang lalu (UTC): " + lastHour);
    

Duration dan Period #

  • Duration: Mewakili durasi waktu dalam hitungan jam, menit, detik, dan nanodetik. Cocok untuk interval waktu yang pendek.
  • Period: Mewakili periode waktu dalam hitungan hari, bulan, dan tahun. Cocok untuk interval waktu yang lebih panjang.

Contoh Penggunaan #

Duration duration = Duration.between(LocalTime.of(10, 0), LocalTime.of(14, 0));
System.out.println("Durasi antara pukul 10:00 dan 14:00: " + duration.toHours() + " jam");

Contoh Penggunaan Period #

Period period = Period.between(LocalDate.of(2023, 1, 1), LocalDate.of(2024, 1, 1));
System.out.println("Periode antara 1 Januari 2023 dan 1 Januari 2024: " + period.getYears() + " tahun");

Format dan Parsing #

  • Formatting: Mengubah objek datetime menjadi string dengan format tertentu.

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss");
    String formattedDateTime = now.format(formatter);
    System.out.println("Formatted DateTime: " + formattedDateTime);
    
  • Parsing: Mengubah string menjadi objek datetime dengan format tertentu.

    String dateTimeString = "24/08/2024 14:30:00";
    LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeString, formatter);
    System.out.println("Parsed DateTime: " + parsedDateTime);
    

Kesimpulan #

Java menawarkan API yang sangat kuat dan fleksibel untuk mengelola tanggal dan waktu melalui paket java.time. Dengan kelas-kelas seperti LocalDate, LocalTime, LocalDateTime, ZonedDateTime, dan Instant, Anda dapat menangani berbagai jenis operasi datetime, seperti penambahan, pengurangan, perbandingan, dan konversi antar zona waktu. Selain itu, Duration dan Period memungkinkan Anda bekerja dengan interval waktu, sementara DateTimeFormatter memudahkan format dan parsing. Ini menjadikan pengelolaan datetime di Java lebih intuitif dan bebas dari masalah yang sering muncul dengan API tanggal dan waktu yang lebih lama.

« Map
Regex »