一、前言
Date这个类在java.util包
中,始于jdk1.0。后来在jdk1.8时,针对日期类进行了一个大的更新,专门新建了java.time包
,新的日期类LocalDateTime就在这个包中。
日常工作中,很容易碰到旧日期类Date,与新日期类LocalDateTime的相互转换。下面就介绍一下如何进行转换
二、思路
我们先打开Date类,看1.8之后新增了什么方法。 可以看到在Date类的最下面增加了两个方法:from(Instant)
、toInstant()
也就是说Date类与新日期类,是通过Instant进行交互的。
三、转换代码
1. Date转LocalDateTime
@Test
public void date2LocalDateTime() {
Date date = new Date();
Instant instant = date.toInstant();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
System.out.println("date: " + date);
System.out.println("localDateTime: " + localDateTime);
}
执行结果
2. LocalDateTime转Date
代码
@Test
public void localDateTime2Date() {
LocalDateTime localDateTime = LocalDateTime.now();
Instant instant = localDateTime.toInstant(ZoneOffset.ofHours(8));
Date date = Date.from(instant);
System.out.println("localDateTime: " + localDateTime);
System.out.println("date: " + date);
}
执行结果
四、随便聊聊
后面每篇文章,尽量增加这样一个章节,主要是聊一些最近的感想和解决问题的思路。
本篇文章,最核心的是打开Date类,查看jdk1.8新增的两个方法:from(Instant)
、toInstant()
看到这个之后,我们就知道了Date与新日期类是根据Instant这个类进行交互的。只要想办法生成一个Instant
对象,我们就能转成Date了。这样就不用死记硬背那些转换的代码了。