Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类
2024-08-24 08:19:38
因为Jdk7及以前的日期时间类的不方便使用问题和线程安全问题等问题,2005年,Stephen Colebourne创建了Joda-Time库,作为替代的日期和时间API。Stephen向JCP提交了一个规范,他本人作为规范的领导人,该规范就是JSR 310,在Java8中实现并发布。
1.Java8日期、时间API包介绍
- java.time包:这是新的Java日期/时间API的基础包,所有的主要基础类都是这个包的一部分,如:LocalDate, LocalTime, LocalDateTime, Instant, Period, Duration等等。所有这些类都是不可变的和线程安全的,在绝大多数情况下,这些类能够有效地处理一些公共的需求。
- java.time.chrono包:这个包为非ISO的日历系统定义了一些泛化的API,我们可以扩展AbstractChronology类来创建自己的日历系统。
- java.time.format包:这个包包含能够格式化和解析日期时间对象的类,在绝大多数情况下,我们不应该直接使用它们,因为java.time包中相应的类已经提供了格式化和解析的方法。
- java.time.temporal包:这个包包含一些时态对象,我们可以用其找出关于日期/时间对象的某个特定日期或时间,比如说,可以找到某月的第一天或最后一天。你可以非常容易地认出这些方法,因为它们都具有“withXXX”的格式。
- java.time.zone包:这个包包含支持不同时区以及相关规则的类
2.Java8日期时间API主要类有:
LocalDate:表示不带时间的日期
LocalTime:表示不带日期的时间
LocalDateTime:日期和时间类
ZoneId:时区
ZonedDateTime:一个带时区的完整时间
Instant:Unix 时间,它代表的是时间戳,比如 2018-01-14T02:20:13.592Z
Clock:获取某个时区下当前的瞬时时间,日期或者时间
Duration:表示一个绝对的精确跨度,使用毫秒为单位
Period:这个类表示与 Duration 相同的概念,但是以人们比较熟悉的单位表示,比如年、月、周
DateTimeFormatter:格式化输出
TemporalAdjusters:获得指定日期时间等,如当月的第一天、今年的最后一天等
ChronoUnit:时间单位枚举,用于加减操作
ChronoField:字段枚举,用于设置字段值。
主要类图:
时间范围示意图:
参考:https://www.iteye.com/news/26064
https://segmentfault.com/a/1190000020179839
《Java8实战》
https://blog.csdn.net/wangsun300/article/details/103403490
最新文章
- Linux 关机命令
- 比较好用的php函数
- javascript 三个 对话框
- diff和patch配合使用(转载备用)
- jQuery中的height()、innerheight()、outerheight()的区别总结
- java理论基础学习二
- 安装db2 提示不是有效的win32应用程序?
- asterisk webrtc使用SIPML5初体验
- C#的DLL注册为COM,Delphi来调用
- Asp.net的对Excel文档的导入导出操作
- 【甘道夫】官方网站MapReduce代码注释具体实例
- iOS开发--XMPPFramework--环境的配置(一)
- Windows 7 设置,启动,停止本地虚拟WLAN
- 章节二、4-String以及StringBuffer和StringBuilder的对比
- LINUX PID 1 和 SYSTEMD
- Centos升级安装.Net core 1.1
- Feed back TFS 2017 RC upgrade status to product team in product group 2017.03.01
- leetcode个人题解——#39 Combination Sum
- ECharts使用(1)(转载)
- powershell常用操作