知识的工作者必须成为自己时间的首席执行官。
<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:泥瓦匠有个小圈子,里面喜欢加入一些文艺的程序员。爱技术,爱生活,爱艺术~ 雨神就爱弹琴,日语思密达*&#@#% )
常用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 代码互操作如下图:

实战中的 jdk8 ,show the code。 在用的项目,完善测试时候用起来才是关键。自然需要 jdk 环境支持,升级吧升级吧。
基于 jdk 8 time包的实践,这次只讲了 localdatetime 类,慢慢带来更多。
如以上文章或链接对你有帮助的话,别忘了在文章结尾处评论哈~ 你也可以点击页面右边“分享”悬浮按钮哦,让更多的人阅读这篇文章。