天天看点

代码片段:基于 JDK 8 time包的时间工具类 TimeUtil一、 Java 8 time包二、介绍 LocalDateTime & DateTimeFormatter APIs三、TimeUtil 代码详解四、与 Old 代码互操作五、小结

知识的工作者必须成为自己时间的首席执行官。

<b>前言</b>

这次泥瓦匠带来的是一个好玩的基于 jdk 8 time包的时间工具类 timeutil。本意,用 jdk 8 写个实战的时间工具类,初版泥瓦匠写的很不好,后来雨神分分钟将这个代码优化优化,谢谢雨神。就此分享下这个代码,让更多的人看到~

从 java 1.0 有个 date 类,想必大家不陌生,后面有了 calendar 类(被废弃 )。api 确实比较难用,因此 java 8 引入 java.time api,这次看看是不是很好用。大致引入了这几个对象:

instant - 瞬间类,表示时间线上的一点(与 date 类似)

duration - 持续时间,表示两个 instant 之间的时间

localdatetime - 本地日期时间,表示一个日期和时间。

本小文重点还是在使用 localdatetime 及其格式化类 datetimeformatter。

localdatetime 表示一个日期和时间,存储确定时区中的某个时间点。

例如某一次练书法弹琴活动。(ps:泥瓦匠有个小圈子,里面喜欢加入一些文艺的程序员。爱技术,爱生活,爱艺术~ 雨神就爱弹琴,日语思密达*&amp;#@#% )

常用api:

now()

从系统中获取当前时间

parse(charsequence text, datetimeformatter formatter)

从字符串按格式获取 localdatetime 实例

datetimeformatter 用于格式化时间,提供了公用的方法入口,打印和解析格式化的时间类。

format(temporalaccessor temporal)

按格式格式化时间

ofpattern(string pattern)

按字符串指定的格式,生成时间格式

泥瓦匠一一道来这个代码的实现。先看代码:

工具类由 final timeutil类 及 其内部枚举类timeformat时间格式类 组成。

a. timeutil 具有私有构造函数,表示被保护,无法被外部 new 出实例。声明了默认的 datetimeformatter 时间格式:yyyy-mm-dd hh:mm:ss。其他则是提供了 获取当前时间 和 时间与string互转的方法。

b. timeformat 内部枚举类,首先它是单例的。transient 关键字目的是确保 datetimeformatter 无序列化存储。为啥单例,因为 datetimeformmatter 是无状态的,可以线程共享。

具体方法解析如下:

1. 获取当前时间

2. 获取当前相应格式的当前时间

3. string 转时间

4. 时间转 string

java.time 类与 old date 代码互操作如下图:

代码片段:基于 JDK 8 time包的时间工具类 TimeUtil一、 Java 8 time包二、介绍 LocalDateTime &amp; DateTimeFormatter APIs三、TimeUtil 代码详解四、与 Old 代码互操作五、小结

实战中的 jdk8 ,show the code。 在用的项目,完善测试时候用起来才是关键。自然需要 jdk 环境支持,升级吧升级吧。

基于 jdk 8 time包的实践,这次只讲了 localdatetime 类,慢慢带来更多。

如以上文章或链接对你有帮助的话,别忘了在文章结尾处评论哈~ 你也可以点击页面右边“分享”悬浮按钮哦,让更多的人阅读这篇文章。