老板,JDK8的日期、时间函数我不熟悉?

在上一篇文章《Java开发篇 - 还在为计算2个日期间隔的天数纠结?是时候换掉java.util.Date》中,介绍了JDK的日期时间函数(java.util.Date, java.util.Calendar),在java的技术发展中充当了重要作用,随然日期时间的处理上存在不好用,容易混乱不好用,但也陪伴了java的起步及成长。

在随后的发展中,也出现了救民于水火的 joda-time,第一次使用时,确实眼前一亮,简单好用,也在很多项目中使用了,但注意到joda-time的官网已更新了信息,说不在积极维护了。

Note that Joda-Time is considered to be a largely “finished” project. No major enhancements are planned. If using Java SE 8, please migrate to java.time (JSR-310).

Joda-time is no longer in active development except to keep timezone data up to date. From Java SE 8 onwards, users are asked to migrate to java.time (JSR-310) - a core part of the JDK which replaces this project. For Android users, java.time is added in API 26+. Projects needing to support lower API levels can use the ThreeTenABP library.

上面的原文就是 Joda 已经不再积极进行开发了,只是进行一些时区数据的维护了。如果正在使用JDK8,建议迁到java.time去,也就是java.time基本上实现了joda-time的功能。感觉有点遗憾的,可能很多人都已经习惯 DateTime 来 new 一下然后进行一堆计算。

上篇文章已经对JDK8中的时间/日期做了介绍,确实提供了更加丰富及简单的函数。当然,对于新旧版本日期函数的转换来说,确实麻烦一点,但也不能否定新版的优点。

比如从Date转换成LocalDateTime,如果能一个LocalDateTime.from() 可能更好。

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

从LocalDateTime 转换成Date

Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant())

回归正题,经过我的实践及测试,项目都基本上将Date/Calendar转换到了java.time的相关函数下,而且这些新的工具类都提供了线程安全,不像SimpleDateFormat是线程不安全,还被坑过。

为了造福其他的开发小伙伴,我将java.time相关的类及函数说明,例子整理到了一个PDF文档,方便更多的小伙伴下载下来就能查阅,权当一个小工具文档,整理完大概有50多页的样子。需要的可以关注我的微信公众号【技术老男孩】,在聊天区回复【javatime】即可获取,另外回复还可以获取到一本【Java核心知识点】的PDF文档,里面的内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈,希望大家都能找到适合自己的公司,开开心心的撸代码。

在部分内容如下图所示:

1) java.time的文档:

111.png

111-1.png

111-2.png

111-3.png

2) Java核心知识点的文档

111-4.png

111-5.png

111-6.png

111-7.png

111-8.png

限于篇幅,欢迎各个小伙伴来下载。

腾讯云推出云产品限时特惠抢购活动:2C2G云服务器7.9元/月起
本文链接:https://www.jhelp.net/p/U9N4CoWlrqrFSgik (转载请保留)。
关注下面的标签,发现更多相似文章