深入学习 Java 8 全新日期时间库 java.time(三)

本文详细介绍了Java 8的java.time包中Temporal、TemporalAccessor、TemporalAdjuster、TemporalAmount和TemporalUnit等核心接口。TemporalAdjuster接口用于调整日期时间对象,TemporalAmount表示一段时间,TemporalUnit定义日期时间单位。文章还探讨了如何使用这些接口进行日期时间的加减操作和字段访问,并提出NextWorkingDay类的设计思路,用于计算下一个工作日。
摘要由CSDN通过智能技术生成

我们在前面涉及到了 TemporalTemporalAccessorTemporalUnitTemporalFieldTemporalAmountTemporalAdjuster,这些全部都是接口,除了 Temporal 其它都是顶级接口。

Temporal 和 TemporalAccessor

我们首先了解一下 TemporalTemporalAccessor这两个接口的层次结构:

在这里插入图片描述

不难发现,我们经常使用的那些日期时间相关的对象都继承了 Temporal ,而 Temporal 接口又继承自TemporalAccessor接口。

我们使用的时候接触到TemporalAccessor接口的地方是静态工厂方法from(TemporalAccessor temporal),现在我们可以很清楚的了解到 from 其实就是根据我们传入的时间日期对象来构造我们想要创建的时间日期对象。

而我们使用的时候在DurationPeriod 接触的比较多,其用进行通用声明,例如 betweenaddTosubtractFrom方法。其次就是在实现了 TemporalAdjuster 接口的类中出现了。

TemporalAdjuster

TemporalAdjuster 接口就是一个函数式接口,其只定义了一个方法:

  • Temporal adjustInto(Temporal temporal):调整指定的 temporal 对象。

有一个很有趣的现象,就是上图中继承了 TemporalTemporalAccessor这两个接口的对象除了 ZonedDateTime 类其它都继承并实现了 TemporalAdjuster 接口,其实现基本上都是将传入的 TemporalTemporalAccessor的实例对象中的信息按照当前实例信息进行修改后返回相应的副本,通俗点理解就是将当前实例的信息写入到参数实例中并返回一个全新的实例。

LocalDateTime nowDateTime=LocalDateTime.now(); // 2019-08-09T17:15:48.582
LocalDate dateY=LocalDate.of(2089, 12, 12); // 2089-12-12
dateY.adjustInto(nowDateTime); // 2089-12-12T17:15:48.582
nowDateTime.adjustInto(dateY)<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值