java中Date LocalDateTime LocalDate之间的转换

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

1) 按照上面的思路,Date转LocalDate的代码如下:

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

运行结果如下


2.png

2) Date转LocalDateTime,LocalDateTime提供了比LocalDate更直接的方法,可以对比下面3、4两个图便可得知。

3.png

4.png

Date转LocalDateTime转换代码如下:

Date date = new Date();
System.out.println(date);
//可以去查看可用的ZoneId集合,有500多个
Set<String> availableZoneIds = ZoneOffset.getAvailableZoneIds();
LocalDateTime ldt = LocalDateTime.ofInstant(date.toInstant(),ZoneOffset.UTC);
System.out.println(ldt);
LocalDateTime ldt1 = LocalDateTime.ofInstant(date.toInstant(),ZoneOffset.ofHours(5));
System.out.println(ldt1);
5.png

3)LocalDate转Date

LocalDate now = LocalDate.now();
System.out.println(now);
Date date = Date.from(now.atStartOfDay(ZoneId.systemDefault()).toInstant());
System.out.println(date);

测试结果如下:


6.png

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

LocalDateTime now = LocalDateTime.now();
System.out.println(now);
Date date = Date.from(now.atZone(ZoneId.systemDefault()).toInstant());
System.out.println(date);

运行结果如下:


7.png

5)LocalDateTime转LocalDate

LocalDateTime now = LocalDateTime.now();
LocalDate date = now.toLocalDate();
System.out.println(date);

6)LocalDate转LocalDateTime

LocalDate now = LocalDate.now();
LocalDateTime ldt = now.atStartOfDay();
System.out.println(ldt);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容