一、前言

Date这个类在java.util包中,始于jdk1.0。后来在jdk1.8时,针对日期类进行了一个大的更新,专门新建了java.time包,新的日期类LocalDateTime就在这个包中。
日常工作中,很容易碰到旧日期类Date,与新日期类LocalDateTime的相互转换。下面就介绍一下如何进行转换

二、思路

我们先打开Date类,看1.8之后新增了什么方法。 可以看到在Date类的最下面增加了两个方法:from(Instant)toInstant()
也就是说Date类与新日期类,是通过Instant进行交互的。
在这里插入图片描述

三、转换代码

1. Date转LocalDateTime
toInstant
Date
Instant
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
toInstant
LocalDateTime
Instant
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了。这样就不用死记硬背那些转换的代码了。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐