LocalDateTime、LocalDate、Date的相互轉換


LocalDateTime、LocalDate、Date的相互轉換

LocalDateTime 及 LocalDate 是 Java8 的新特性,有時為了兼容 Date 類型需要進行轉換。

LocalDateTime 轉 LocalDate

直接調用 toLocalDate() 方法

LocalDateTime localDateTime = LocalDateTime.now();
LocalDate localDate = localDateTime.toLocalDate();

LocalDateTime 轉 Date

在LocalDateTime 轉 Date 時,需要使用到 Java 8的幾個類

  • ZoneId/ZoneOffset:表示時區
  • ZonedDateTime: 表示特定時區的日期和時間
  • Instant:表示時刻,不直接對應年月日信息,需要通過時區轉換
LocalDateTime localDateTime = LocalDateTime.now();
//獲取系統默認時區
ZoneId zoneId = ZoneId.systemDefault();
//時區的日期和時間
ZonedDateTime zonedDateTime = localDateTime.atZone(zoneId);
//獲取時刻
Date date = Date.from(zonedDateTime.toInstant());
System.out.println("格式化前:localDateTime:" + localDateTime + "  Date:" + date);
//格式化LocalDateTime、Date
DateTimeFormatter localDateTimeFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("格式化后:localDateTime:" + localDateTimeFormat.format(localDateTime) + "  Date:" + dateFormat.format(date));

輸出結果如下:

格式化前:localDateTime:2020-10-27T11:35:09.969  Date:Tue Oct 27 11:35:09 CST 2020
格式化后:localDateTime:2020-10-27 11:35:09  Date:2020-10-27 11:35:09

LocalDate 轉 LocalDateTime

一般調用 atTime() 方法進行賦值

LocalDate localDate = LocalDate.now();
LocalDateTime localDateTime1 = localDate.atStartOfDay();
LocalDateTime localDateTime2 = localDate.atTime(8,20,33);
LocalDateTime localDateTime3 = localDate.atTime(LocalTime.now());

LocalDate 轉 Date

先調用 atStartOfDay() 方法轉 LocalDateTime 再轉 Date

LocalDate localDate = LocalDate.now();
ZoneId zoneId = ZoneId.systemDefault();
Date date = Date.from(localDate.atStartOfDay().atZone(zoneId).toInstant());

Date 轉 LocalDateTime

先轉 ZonedDateTime 再轉 LocalDateTime

Date date = new Date();
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = date.toInstant().atZone(zoneId).toLocalDateTime();

Date 轉 LocalDate

跟 LocalDate 同理

Date date = new Date();
ZoneId zoneId = ZoneId.systemDefault();
LocalDate localDate = date.toInstant().atZone(zoneId).toLocalDate();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM