虽然Java都干到17了,但是很多人怕是连Java8都还没用明白吧,比如我就算一个。

Java8新出的日期时间API:Instant,LocalDate,LocalTime,LocalDateTime。提供了一系列用于创建、格式化、解析、计算、修改时间的方法。

在此前,大部分人都是通过Date和SimpleDateFormat来进行日期相关的操作,由于SimpleDateFormat提供的方法不是线程安全的,因此多线程情况下容易出现日期解析错误问题。

提供的方法可以看文档学习一下,这里先记录一下最棘手的Date和LocalDateTime之间的转换问题。

Date to LocalDateTime:

Date todayDate = new Date();
LocalDateTime ldt = todayDate.toInstant()
        .atZone( ZoneId.systemDefault() )
        .toLocalDateTime();

LocalDateTime to Date:

LocalDateTime localDateTime = LocalDateTime.now();
Date date = Date.from(localDateTime.atZone( ZoneId.systemDefault()).toInstant());

不难发现,两者之间的转换都需要经过一个Instant的中间状态。

最后修改:2022 年 01 月 04 日
如果觉得我的文章对你有用,请随意赞赏