Data与Java8中的LocalDate相互转换

一、前言

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

二、思路

我们先打开Date类,看1.8之后新增了什么方法。 可以看到在Date类的最下面增加了两个方法:from(Instant)toInstant()
也就是说Date类与新日期类,是通过Instant进行交互的。
Data与Java8中的LocalDate相互转换_第1张图片

三、转换代码

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);
    }

执行结果Data与Java8中的LocalDate相互转换_第2张图片

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);
    }

执行结果Data与Java8中的LocalDate相互转换_第3张图片

四、随便聊聊

后面每篇文章,尽量增加这样一个章节,主要是聊一些最近的感想和解决问题的思路。


本篇文章,最核心的是打开Date类,查看jdk1.8新增的两个方法:from(Instant)toInstant()
看到这个之后,我们就知道了Date与新日期类是根据Instant这个类进行交互的。只要想办法生成一个Instant对象,我们就能转成Date了。这样就不用死记硬背那些转换的代码了。

你可能感兴趣的:(java,date,localdatetime)