代码片段:基于 JDK 8 time包的时间工具类 TimeUtil
2016-08-29 10:15
357 查看
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!
“知识的工作者必须成为自己时间的首席执行官。”
这次泥瓦匠带来的是一个好玩的基于 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 用于格式化时间,提供了公用的方法入口,打印和解析格式化的时间类。
常用api:
format(TemporalAccessor temporal)
按格式格式化时间
ofPattern(String pattern)
按字符串指定的格式,生成时间格式
泥瓦匠一一道来这个代码的实现。先看代码:
工具类由 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
java.time 类与 Old Date 代码互操作如下图:
实战中的 JDK8 ,Show the code。 在用的项目,完善测试时候用起来才是关键。自然需要 JDK 环境支持,升级吧升级吧。
基于 JDK 8 time包的实践,这次只讲了 LocalDateTime 类,慢慢带来更多。
相关代码分享在 Github 主页
如以上文章或链接对你有帮助的话,别忘了在文章结尾处评论哈~ 你也可以点击页面右边“分享”悬浮按钮哦,让更多的人阅读这篇文章。
“知识的工作者必须成为自己时间的首席执行官。”
前言
这次泥瓦匠带来的是一个好玩的基于 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 代码详解
泥瓦匠一一道来这个代码的实现。先看代码:1/ TimeUtil 具有私有构造函数,表示被保护,无法被外部 new 出实例。
声明了默认的 DateTimeFormatter 时间格式:yyyy-MM-dd HH:mm:ss。其他则是提供了 获取当前时间 和 时间与String互转的方法。
2/ TimeFormat 内部枚举类,首先它是单例的。
transient 关键字目的是确保 DateTimeFormatter 无序列化存储。为啥单例,因为 DateTimeFormmatter 是无状态的,可以线程共享。
具体方法解析如下:
1. 获取当前时间
默认格式: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 主页
如以上文章或链接对你有帮助的话,别忘了在文章结尾处评论哈~ 你也可以点击页面右边“分享”悬浮按钮哦,让更多的人阅读这篇文章。
相关文章推荐
- 代码片段:基于 JDK 8 time包的时间工具类 TimeUtil
- 基于 JDK 8 time包的时间工具类
- 时间操作工具类(代码收藏)
- 常用php代码片段-脚本执行时间设置,时区设置,session开
- 计算CPU 百分比 - 基于openstack kvm 虚拟机采集片段代码分享
- (工具类)source insight中快速添加时间到代码
- Python:SQLMap源码精读—基于时间的盲注(time-based blind)
- JDK实现规定时间执行规定任务代码
- 代码片段 - C#基于google api计算距离
- 使用 console.time() 计算js代码执行时间
- php 时间戳代码片段
- 代码片段之时间标记
- 【Android代码片段之五】ShowDialog工具类
- PHP setTime 设置当前时间的代码
- 开源中国iOS客户端学习——(九)代码片段之时间标记
- php查看代码执行时间工具类
- 代码片段 -- Java计算代码执行消耗时间
- TOTP:Time-based One-time Password Algorithm(基于时间的一次性密码算法)
- 收藏的25个非常有用的CSS代码片段,在你开发基于CSS的网站时,这些代码是经常用到的,比方说一些特殊的效果,圆角边框,CSS透明度,梯形环绕,CSS小三角等,希望对你有用
- mach_absolute_time 获取系统运行时间 及 测试代码效率