您的位置:首页 > 编程语言 > Java开发

代码片段:基于 JDK 8 time包的时间工具类 TimeUtil

2016-08-29 10:15 357 查看
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!

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


前言

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


一、 Java 8 time包

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

Instant – 瞬间类,表示时间线上的一点(与 Date 类似)
Duration – 持续时间,表示两个 Instant 之间的时间
LocalDateTime – 本地日期时间,表示一个日期和时间。

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


二、介绍 LocalDateTime & DateTimeFormatter APIs

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

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

常用api:

now()

从系统中获取当前时间
parse(CharSequence text, DateTimeFormatter formatter)

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

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

常用api:

format(TemporalAccessor temporal)

按格式格式化时间
ofPattern(String pattern)

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


三、TimeUtil 代码详解

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

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

1/ TimeUtil 具有私有构造函数,表示被保护,无法被外部 new 出实例。

声明了默认的 DateTimeFormatter 时间格式:yyyy-MM-dd HH:mm:ss。其他则是提供了 获取当前时间 和 时间与String互转的方法。

2/ TimeFormat 内部枚举类,首先它是单例的。

transient 关键字目的是确保 DateTimeFormatter 无序列化存储。为啥单例,因为 DateTimeFormmatter 是无状态的,可以线程共享。

具体方法解析如下:

1. 获取当前时间

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

3. String 转时间

默认格式:yyyy-MM-dd HH:mm:ss

其他格式之一:yyyy-MM-dd HH:mm:ss

4. 时间转 String

默认格式:yyyy-MM-dd HH:mm:ss

其他格式之一:yyyy-MM-dd HH:mm:ss


四、与 Old 代码互操作

java.time 类与 Old Date 代码互操作如下图:






五、小结

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

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

相关代码分享在 Github 主页

如以上文章或链接对你有帮助的话,别忘了在文章结尾处评论哈~ 你也可以点击页面右边“分享”悬浮按钮哦,让更多的人阅读这篇文章。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: