Java中Date与 LocalDateTime ,LocalDate之间的转换

x33g5p2x  于2022-06-06 转载在 Java  
字(1.6k)|赞(0)|评价(0)|浏览(707)

Date与LocalDateTime和LocalDate互相转换思路
Date转LocalDateTime和LocalDate都可以通过Date先转换成Instant然后再转换成LocalDateTime和LocalDate,可以按照下图的方式进行转换。LocalDateTime和LocalDate转换成Date也是以Instant为中介来进行转换的。

1)Date转LocalDate的代码如下:

  1. Date date = new Date();
  2. System.out.println(date);
  3. Instant instant = date.toInstant();
  4. LocalDate ld = instant.atZone(ZoneId.systemDefault()).toLocalDate();
  5. System.out.println(ld);

运行结果如下

  1. Sat Jun 04 19:13:15 CST 2022
  2. 2022-06-04

2) Date转LocalDateTime,LocalDateTime提供了比LocalDate更直接的方法

Date转LocalDateTime转换代码如下:

  1. Date date = new Date();
  2. System.out.println(date);
  3. //可以去查看可用的ZoneId集合,有500多个
  4. Set<String> availableZoneIds = ZoneOffset.getAvailableZoneIds();
  5. LocalDateTime ldt = LocalDateTime.ofInstant(date.toInstant(),ZoneOffset.UTC);
  6. System.out.println(ldt);
  7. LocalDateTime ldt1 = LocalDateTime.ofInstant(date.toInstant(),ZoneOffset.ofHours(5));
  8. System.out.println(ldt1);
  1. Sat Jun 04 19:40:04 CST 2022
  2. 2022-06-04T11:40:04.754
  3. 2022-06-04T16:40:04.754

3)LocalDate转Date

  1. LocalDate now = LocalDate.now();
  2. System.out.println(now);
  3. Date date = Date.from(now.atStartOfDay(ZoneId.systemDefault()).toInstant());
  4. System.out.println(date);
  1. 2022-06-04
  2. Sat Jun 04 00:00:00 CST 2022

4)LocalDateTime转换成Date也是一样的

  1. LocalDateTime now = LocalDateTime.now();
  2. System.out.println(now);
  3. Date date = Date.from(now.atZone(ZoneId.systemDefault()).toInstant());
  4. System.out.println(date);
  1. 2022-06-04T19:41:17.715
  2. Sat Jun 04 19:41:17 CST 2022

5)LocalDateTime转LocalDate

  1. LocalDateTime now = LocalDateTime.now();
  2. LocalDate date = now.toLocalDate();
  3. System.out.println(date);
  1. 2022-06-04

6)LocalDate转LocalDateTime

  1. LocalDate now = LocalDate.now();
  2. LocalDateTime ldt = now.atStartOfDay();
  3. System.out.println(ldt);
  1. 2022-06-04T00:00

相关文章

最新文章

更多