Convert Date (java.util.Date) to new date type Java 8: LocalDateTime, LocalDate, LocalTime.
Bài đăng này đã không được cập nhật trong 5 năm
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