Java 8 Time - 时间管理大师

整体分析

java.time包结构分析

  • time:父级基础包,常用的时间相关类都在这里,如LocalDate\LocalDateTime\Instant等
  • chrono:日历系统包,日历相关的接口(类似Calendar)也包括提供对其他日历系统的API
  • format:格式化和解析包,主要类是DateTimeFormatter
  • temporal:扩展功能包,提供细粒度的时间控制field、unit,如weeks、months、month-of-year等
  • zone:时区包,时区规则、本地时区等

继承图

chrono包

LocalDate、LocalTime、LocalDateTime都实现了Chrono包中对应ChronoLocalDate、ChronoLocalTime、ChronoLocalDateTime。世界上现有的日历系统也有很多种,the Japanese, Minguo, Thai Buddhist and others.而Chrono包则封装了一个Chronology
在这里插入图片描述

temporal包

TemporalAdjuster 接口是时间调整器,执行日常环境常见的日期操作,例如,可以获得当月的最后一天、下一年的第一天。
TemporalAccessor 接口主要是时间访问器,子类可以实现之后提供TemporalField和TemporalQuery相关的信息

zone包

这个包主要提供时区相关接口和类,需要注意的是ZoneRules接口,这个是提供同一个地区某段时间使用的时区规则集合,具体可以参考
迄今为止最硬核的「Java8时间系统」设计原理与使用方法.
这篇文章写的很细致,推荐。

常用静态方法字义对应

  1. from 静态方法 依据传入的TemporalAccessor对象创建实例
  2. now 静态方法 依据系统时钟创建Temporal对象
  3. of 静态方法 其他时间对象,或者详细的年月日等创建对象
  4. parse 静态方法 由字符串创建Temporal对象的实例
  5. atOffset 将Temporal对象和某个时区偏移相结合
  6. atZone 将Temporal 对象和某个时区相结合
  7. format 使用某个指定的格式将Temporal对象转换为字符串(Instant类不提供此方法)
  8. get 读取Temporal对象的某一部分的值
  9. minus 将当前的Temporal对象的值减去一定的时长,并创建新对象
  10. plus 将当前Temporal对象的值加上一定的时长,并创建新对象
  11. with 调整当前对象部分时间熟悉,并创建新对象。
  12. is 判断与其他时间对象的先后关系等

新旧方法对比图

java time compare

总结

这个包的整体设计和代码实现也都是教科书级,我本来是想整理一个API的常用使用,但是发现对整个包的结构和相关设计都不清晰。想着摸索了解作者的设计思路,然后用自己的语言讲解,提升自己的理解,然而越看越发现自己知识欠缺,大到什么是时间,怎么统一表示时间,如果针对时间建立领域模型,小到如何调整时间,都有所不知。希望能够Stay hungry! stay foolish!

参考资料

链接: Java SE 8 Date and Time.
链接: Java 8 (11) 新的日期和时间API.
链接: 迄今为止最硬核的「Java8时间系统」设计原理与使用方法.
链接: java8新特性之time深度解析.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值