☕【Java 技术指南】「Java8 编程专题」让你真正会用对 Java 新版日期时间 API 编程指南
技术背景
一切都源于 JSR-310 规范
JSR-310 规范提供一个新的和改进的 Java 日期与时间 API,会在 Java8 中包含,可以下载 OpenJDK 早期发布版本试用,详细信息可见:https://jdk8.java.net/download.html
JSR-310 规范领导者 Stephen Colebourne 就是 joda-time 作者,其主要思想也是借鉴了 joda-time,而不是直接把 joda-time 移植到 Java 平台中,API 是类似的,但做了改进和调整。
具体规范请前往如下地址下载:https://jcp.org/en/jsr/detail?id=310
代替 Date 类的日期类(LocalXX 系列)
首当其冲的是 LocalDateTime、LocalDate、LocalTime ,提供了对 java.util.Date 的替代,另外还提供了新的 DateTimeFormatter 用于对格式化/解析的支持
介绍相关的 XXX.now()的方法,这些太简单了,接下来介绍一下相关的较为特殊的用法,例如:
相对于 ZoneId.systemDefault()默认时区
相当于使用默认时区时钟瞬时时间创建`Clock.systemDefaultZone()``;
相对于自定义时区
会以相应的时区显示日期:欧洲的巴黎时区
自定义时钟
与上面的一样,会以相应的时区显示日期
定义时间数据
不需要写什么相对时间 如 java.util.Date 年是相对于 1900 月是从 0 开始
使用瞬时时间 + 时区
解析 String->LocalDateTime
999 毫秒 等价于 999000000 纳秒
使用 DateTimeFormatter API 解析和格式化
时间属性的获取
时间增减
代替 System.currentTimeMillis()的瞬时对象(Instant)
瞬时时间,等价于以前的 System.currentTimeMillis()
瞬时时间 相当于以前的 System.currentTimeMillis()
获取系统 UTC 默认时钟
固定瞬时时间时钟
Clock 时钟
类似于钟表的概念,提供了如系统时钟、固定时钟、特定时区的时钟
//时钟提供给我们用于访问某个特定 时区的 瞬时时间、日期和时间的。
系统默认 UTC 时钟(当前瞬时时间 System.currentTimeMillis())
系统默认时区时钟(当前瞬时时间)
ZonedDateTime
带有时区的 date-time 存储纳秒、时区和时差(避免与本地 date-time 歧义);API 和 LocalDateTime 类似。
API 和 LocalDateTime 类似,只是多了时差(如 2013-12-20T10:35:50.711+08:00[Asia/Shanghai])
其他的用法也是类似的 就不介绍了
Duration
表示两个瞬时时间的时间段
Calendar 的替代者 Chronology
Chronology 用于对年历系统的支持,是 java.util.Calendar 的替代者
年、年月、月日、周期的 API 支持
Period 日期层面的间隔时间
周期,如表示 10 天前 3 年 5 个月
评论