Kenapa perlu mengubah Date ke LocalDate ?


Kebutuhan ini biasanya karena pada code kita yang baru biasanya teman dan kolega sudah memakai Java 8 ke atas , dan sudah menggunakan library java java.time.* , termasuk didalamnya java.time.LocalDate.

Tetapi ternyata ada saja ada legacy code yang masih menggunakan java.util.Date. Sehingga kita perlu melakukan konversi dari java.util.Date ke java.time.LocalDate.

Begitupun misalnya kalau kita menggunakan koneksi ke relational database menggunakan library JDBC versi 1.4.2 kebawah, maka untuk kembalian Date dari database, kita belum bisa mendapatkan object LocalDate karena belum disupport.

Object java.time.LocalDate baru disupport dengan library JDBC 1.4.2.


Bagaimana caranya ?


1. pakai fungsi date.toInstant().atZone().toLocalDate()

Code :

import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;

public static void main(String[] args) {
    Date now = new Date();
    System.out.println("Tanggal Sekarang Date : " + now);

    LocalDate localDate = now.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
    System.out.println("Tanggal Sekarang Local Date : " + localDate);
}

hasilnya :

Tanggal Sekarang Date : Wed May 25 12:52:14 ICT 2021
Tanggal Sekarang Local Date : 2021-05-25

2. pakai fungsi Instant.ofEpochMilli(date).atZone().toLocalDate()

Code :

import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;

public static void main(String[] args) {
    Date now = new Date();
    System.out.println("Tanggal Sekarang : " + now);

    LocalDate localDate = Instant.ofEpochMilli(now.getTime()).atZone(ZoneId.systemDefault()).toLocalDate();
    System.out.println("Tanggal Sekarang : " + localDate);
}

hasilnya :

Tanggal Sekarang Date : Wed May 25 12:52:14 ICT 2021
Tanggal Sekarang Local Date : 2021-05-25

3. pakai fungsi java.sql.Date(date).toLocalDate()

Code :

import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;

public static void main(String[] args) {
    Date now = new Date();
    System.out.println("Tanggal Sekarang : " + now);

    LocalDate localDate = new java.sql.Date(now.getTime()).toLocalDate();
    System.out.println("Tanggal Sekarang : " + localDate);
}

hasilnya :

Tanggal Sekarang Date : Wed May 25 12:52:14 ICT 2021
Tanggal Sekarang Local Date : 2021-05-25

Kalau kita lihat fungsi di java.sql.Date ==> toLocalDate();

@SuppressWarnings("deprecation")
public LocalDate toLocalDate() {
    return LocalDate.of(getYear() + 1900, getMonth() + 1, getDate());
}

didalamnya menggunakan fungsi getYear(), getMonth, dan getDate() dari java.util.Date lagi.


Demikianlah beberapa cara untuk mengubah Date ke LocalDate dalam bahasa Java.