使用字段和单位和日期时间调整器来获得日期和时间。
该软件包扩展了基础软件包,为更强大的用例提供了额外的功能。 支持包括:
日期时间单位,例如年,月,日和小时
日期时间字段,例如月份,星期几或小时
日期时间调整功能
周的不同定义
字段和单位
日期和时间以字段和单位表示。 单位用于衡量时间量,例如年,日或分钟。 所有单位均实施TemporalUnit 。 该组众所周知的单元在ChronoUnit中定义,例如DAYS 。 单元界面旨在允许应用程序定义的单元。
字段用于表示较大日期时间的一部分,例如年,月或秒。 所有字段均实现TemporalField 。 该组众所周知的字段在ChronoField中定义,例如HOUR_OF_DAY 。 附加字段由定义JulianFields , WeekFields和IsoFields 。 字段界面旨在允许应用程序定义的字段。
该软件包提供的工具允许以最适合框架的一般方式访问日期和时间的单位和字段。 Temporal提供了支持字段的日期时间类型的抽象。 其方法支持获取字段的值,使用修改的字段的值创建新的日期时间,以及查询通常用于提取偏移量或时区的其他信息。
应用程序代码中字段的一种用途是检索没有便捷方法的字段。 例如,获取月日很常见,因为LocalDate上有一个名为getDayOfMonth()的方法。 但是,对于更多不寻常的字段,必须使用该字段。 例如, date.get(ChronoField.ALIGNED_WEEK_OF_MONTH) 。 这些字段还提供对有效值范围的访问。
调整和查询
日期时间问题空间的关键部分是将日期调整为新的相关值,例如“月的最后一天”或“下周三”。 这些被建模为调整基准日期时间的函数。 这些功能实现TemporalAdjuster并在Temporal上Temporal 。 TemporalAdjusters中提供了一组常用功能。 例如,要查找给定日期之后第一次出现的星期几,请使用TemporalAdjusters.next(DayOfWeek) ,例如date.with(next(MONDAY)) 。 应用程序还可以通过实现TemporalAdjuster来定义调整器。
TemporalAmount接口模拟了相对时间的数量。
除了调整日期时间外,还提供了一个接口,通过TemporalQuery启用查询。 查询接口的最常见实现是方法引用。 可以使用主要类的from(TemporalAccessor)方法,例如LocalDate::from或Month::from 。 进一步的实现在TemporalQueries中作为静态方法提供。 应用程序还可以通过实现TemporalQuery来定义查询。
周
不同的语言环境对本周有不同的定义。 例如,在欧洲,本周通常在星期一开始,而在美国则从星期日开始。 WeekFields类模拟了这种区别。
ISO日历系统定义了额外的基于周的年份划分。 这定义了基于整个星期一到星期一星期的一年。 这是建模于IsoFields 。
包装规格
除非另有说明,否则将null参数传递给此包中任何类或接口中的构造函数或方法将导致抛出NullPointerException 。 Javadoc“@param”定义用于概括null行为。 每个方法都没有明确记录“ @throws NullPointerException ”。
所有计算都应检查数字溢出并抛出ArithmeticException或DateTimeException 。
从以下版本开始:
1.8