0

Convert Date (java.util.Date) to new date type Java 8: LocalDateTime, LocalDate, LocalTime.

Một trong những update feature của Java 8 là có 1 hệ thống class mới để thao tác với dữ liệu kiểu date. Dễ hiểu hơn, dễ sử dụng hơn, tốt hơn so với kiểu cũ. Nhưng chưa phải hầu hết các thư viện, framework build trên java đã support kiểu date mới. Vì vậy đôi khi chúng ta cần phải chuyển đổi kiểu date cũ sang kiểu date mới và ngược lại.

Dưới đây là ví dụ các cách thức chuyển đổi: Lưu ý là tất cả convert đều cần sử dụng Instant class

1. Convert java.util.Date to java.time.LocalDateTime

    public static void oldDateToLocalDateTime()
    {
        Date now = Calendar.getInstance().getTime();
        Instant instant = Instant.ofEpochMilli(now.getTime());
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
        System.out.println(localDateTime);
    }

    public static void oldDateToLocalDateTimeSecondOption()
    {
        Date now = Calendar.getInstance().getTime();
        Instant instant = now.toInstant();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
        System.out.println(now);
        System.out.println(localDateTime);
    }

2. Convert java.util.Date to java.time.LocalDate

    public static void oldDateToLocalDate()
    {
        Date now = Calendar.getInstance().getTime();
        Instant instant = Instant.ofEpochMilli(now.getTime());
        LocalDate localDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()).toLocalDate();
        System.out.println(now);
        System.out.println(localDate);
    }

    public static void oldDateToLocalDateSecond()
    {
        Date now = Calendar.getInstance().getTime();
        Instant instant = now.toInstant();
        LocalDate localDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()).toLocalDate();
        System.out.println(now);
        System.out.println(localDate);
    }

3. Convert java.util.Date to java.time.LocalTime

    public static void oldDateToLocalTime()
    {
        Date now = Calendar.getInstance().getTime();
        Instant instant = Instant.ofEpochMilli(now.getTime());
        LocalTime localTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()).toLocalTime();
        System.out.println(now);
        System.out.println(localTime);

    }

    public static void oldDateToLocalTimeSecondOption()
    {
        Date now = Calendar.getInstance().getTime();
        Instant instant = now.toInstant();
        LocalTime localTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()).toLocalTime();
        System.out.println(now);
        System.out.println(localTime);

    }

4. Convert java.time.LocalDateTime to java.util.Date

 public static void localDateTimeToOldDate()
    {
        LocalDateTime localDateTime = LocalDateTime.now();
        Date oldDate = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());

        System.out.println(localDateTime);
        System.out.println(oldDate);
    }

5. Convert java.time.LocalDate to java.util.Date

    public static void localDateToOldDate()
    {
        LocalDate localDate = LocalDate.now();
        Date oldDate =
                Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());

        System.out.println(localDate);
        System.out.println(oldDate);
    }

6. Convert java.time.LocalTime to java.util.Date

    public static void localTimeToOldDate()
    {
        LocalTime localTime = LocalTime.now();

        Instant instant = localTime.atDate(LocalDate.of(2015, 11, 11)).
                atZone(ZoneId.systemDefault()).toInstant();
        Date oldDate = Date.from(instant);
        System.out.println(oldDate);
        System.out.println(localTime);

    }  

7. Convert ZoneDateTime to Timestamp

    String dateSTR = "2019-06-16T17:00:00.0000000Z";
    ZonedDateTime zonedDateTime = ZonedDateTime.parse(dateSTR, DateTimeFormatter.ISO_DATE_TIME);
     Timestamp timestamp = Timestamp.valueOf(zonedDateTime.toLocalDateTime());

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí