Module  java.base

Package java.time.temporal

使用字段和单位访问日期和时间,以及日期时间调整器。

该包扩展在基础包上,为更强大的用例提供附加功能。 支持包括:

  • 日期时间单位,如年,月,日,小时
  • 日期时间的字段,如月份,星期几或小时
  • 日期时间调整功能
  • 周的不同定义

领域和单位

日期和时间用字段和单位来表示。 一个单位用来衡量一段时间,例如年,日或分钟。 所有单位实施TemporalUnit 众所周知的单位集合在ChronoUnit定义,如DAYS 单元接口设计为允许应用定义单元。

一个字段用于表示较大日期时间的一部分,例如年份,月份或秒数。 所有字段实现TemporalField 众所周知的字段集定义在ChronoField ,如HOUR_OF_DAY 附加字段由定义JulianFieldsWeekFieldsIsoFields 字段界面旨在允许应用程序定义的字段。

该软件包提供了一些工具,可以以最适合框架的一般方式访问日期和时间的单位和字段。 Temporal提供支持字段的日期时间类型的抽象。 它的方法支持获取一个字段的值,创建一个修改字段的值的新的日期时间,并查询通常用于提取偏移量或时区的其他信息。

应用程序代码中的一个字段的使用是检索没有方便方法的字段。 例如,获取月份是足够普遍的,因为有一个LocalDate称为getDayOfMonth()的方法。 然而,对于更不寻常的领域,有必要使用该领域。 例如, date.get(ChronoField.ALIGNED_WEEK_OF_MONTH) 这些字段还提供对有效值范围的访问。

调整和查询

日期时间问题空间的关键部分是将日期调整为新的相关值,例如“月的最后一天”或“下周三”。 这些被建模为调整基准日期时间的函数。 功能实现TemporalAdjuster ,操作Temporal TemporalAdjusters提供了一组常用功能。 例如,要查找给定日期之后的星期几的第一次出现,请使用TemporalAdjusters.next(DayOfWeek) ,例如date.with(next(MONDAY)) 应用程序还可以通过实现TemporalAdjuster定义调整器。

TemporalAmount接口模型的相对时间量。

除了调整日期时间外,还提供了一个界面,以通过TemporalQuery进行查询。 查询界面最常用的方法是方法引用。 可以使用主要类的from(TemporalAccessor)方法,如LocalDate::fromMonth::from TemporalQueries中提供了进一步的实现方式作为静态方法。 应用程序还可以通过实现TemporalQuery定义查询。

不同的地区有一周不同的定义。 例如,在欧洲,这个星期通常从星期一开始,而在美国,它从星期天开始。 WeekFields类型的这个区别。

ISO日历系统定义了一个额外的基于星期的年份划分。 这定义了整个星期一至星期一的一年。 这是建模在IsoFields

包装规格

除非另有说明,否则在此包中的任何类或接口中将null参数传递给构造函数或方法将导致抛出NullPointerException Javadoc“@param”定义用于总结空行为。 @throws NullPointerException ”没有在每个方法中明确记录。

所有计算应检查数字溢出,并抛出一个ArithmeticExceptionDateTimeException

从以下版本开始:
1.8