public final class TemporalAdjusters extends Object
调整器是修改时间物体的关键工具。 它们存在于外部化调整过程中,根据策略设计模式允许不同的方法。 示例可以是设置日期避免周末的调整器,或者将日期设置为月份的最后一天。
有使用的两种等价的方式TemporalAdjuster
。 第一个是直接在接口上调用方法。 二是使用Temporal.with(TemporalAdjuster)
:
// these two lines are equivalent, but the second approach is recommended
temporal = thisAdjuster.adjustInto(temporal);
temporal = temporal.with(thisAdjuster);
建议使用第二种方法, with(TemporalAdjuster)
,因为在代码中阅读更清楚。
该类包含一组标准的调整器,可作为静态方法使用。 这些包括:
TemporalAdjuster
Modifier and Type | Method and Description |
---|---|
static TemporalAdjuster |
dayOfWeekInMonth(int ordinal, DayOfWeek dayOfWeek)
返回月度调整器中的星期几,该日期将在同一个月内按顺序的星期几返回新的日期。
|
static TemporalAdjuster |
firstDayOfMonth()
返回“第一个月的”调整器,它返回设置为当月的第一天的新日期。
|
static TemporalAdjuster |
firstDayOfNextMonth()
返回“下一个月的第一天”调整器,它将新的日期设置为下个月的第一天。
|
static TemporalAdjuster |
firstDayOfNextYear()
返回“明年的第一天”调整器,返回设置为下一年的第一天的新日期。
|
static TemporalAdjuster |
firstDayOfYear()
返回“一年的第一天”调整器,其返回设置为当前第一天的新日期。
|
static TemporalAdjuster |
firstInMonth(DayOfWeek dayOfWeek)
返回月初调整器,它在同一个月内返回与第一个匹配的星期几的新日期。
|
static TemporalAdjuster |
lastDayOfMonth()
返回“最后一个月的”调整器,该日期设置为当前月份的最后一天。
|
static TemporalAdjuster |
lastDayOfYear()
返回“最后一天的”调整器,其返回设置为当前年份的最后一天的新日期。
|
static TemporalAdjuster |
lastInMonth(DayOfWeek dayOfWeek)
返回最近一个月的调整器,它返回与最后一个匹配的星期几相同月份的新日期。
|
static TemporalAdjuster |
next(DayOfWeek dayOfWeek)
返回下一个星期的调整器,该调整器将日期调整为在调整日期之后的指定日期的第一次出现。
|
static TemporalAdjuster |
nextOrSame(DayOfWeek dayOfWeek)
返回下一个或相同的星期几调整器,该调整器将日期调整为在调整日期之后指定的星期几的第一次出现,除非它已在当天在同一对象被返回。
|
static TemporalAdjuster |
ofDateAdjuster(UnaryOperator<LocalDate> dateBasedAdjuster)
获取一个包含日期调整器的
TemporalAdjuster 。
|
static TemporalAdjuster |
previous(DayOfWeek dayOfWeek)
返回上一个星期的调整器,该调整器将日期调整为在调整日期之前的指定日期的第一次出现。
|
static TemporalAdjuster |
previousOrSame(DayOfWeek dayOfWeek)
返回之前或相同的日期调整器,该调整器将日期调整为在调整日期之前的指定日期的第一次出现,除非已在当天返回相同的对象。
|
public static TemporalAdjuster ofDateAdjuster(UnaryOperator<LocalDate> dateBasedAdjuster)
TemporalAdjuster
。
TemporalAdjuster
是基于低级别的Temporal
接口。 这种方法允许从LocalDate
到LocalDate
调整被包装以匹配基于时间的接口。 这是为了方便使用户编写的调整器更简单。
一般来说,用户编写的调整器应该是静态常量:
static TemporalAdjuster TWO_DAYS_LATER = TemporalAdjusters.ofDateAdjuster(date -> date.plusDays(2));
dateBasedAdjuster
- 基于日期的调整器,不为空
public static TemporalAdjuster firstDayOfMonth()
ISO日历系统的行为如下:
输入2011-01-15将返回2011-01-01。
输入2011-02-15将返回2011-02-01。
该行为适用于大多数日历系统。 相当于:
temporal.with(DAY_OF_MONTH, 1);
public static TemporalAdjuster lastDayOfMonth()
ISO日历系统的行为如下:
输入2011-01-15将返回2011-01-31。
输入2011-02-15将返回2011-02-28。
输入2012-02-15将返回2012-02-29(闰年)。
输入2011-04-15将返回2011-04-30。
该行为适用于大多数日历系统。 相当于:
long lastDay = temporal.range(DAY_OF_MONTH).getMaximum();
temporal.with(DAY_OF_MONTH, lastDay);
public static TemporalAdjuster firstDayOfNextMonth()
ISO日历系统的行为如下:
输入2011-01-15将返回2011-02-01。
输入2011-02-15将返回2011-03-01。
该行为适用于大多数日历系统。 相当于:
temporal.with(DAY_OF_MONTH, 1).plus(1, MONTHS);
public static TemporalAdjuster firstDayOfYear()
ISO日历系统的行为如下:
输入2011-01-15将返回2011-01-01。
输入2011-02-15将返回2011-01-01。
该行为适用于大多数日历系统。 相当于:
temporal.with(DAY_OF_YEAR, 1);
public static TemporalAdjuster lastDayOfYear()
ISO日历系统的行为如下:
输入2011-01-15将返回2011-12-31。
输入2011-02-15将返回2011-12-31。
该行为适用于大多数日历系统。 相当于:
long lastDay = temporal.range(DAY_OF_YEAR).getMaximum();
temporal.with(DAY_OF_YEAR, lastDay);
public static TemporalAdjuster firstDayOfNextYear()
ISO日历系统的行为如下:
输入2011-01-15将返回2012-01-01。
该行为适用于大多数日历系统。 相当于:
temporal.with(DAY_OF_YEAR, 1).plus(1, YEARS);
public static TemporalAdjuster firstInMonth(DayOfWeek dayOfWeek)
ISO日历系统的行为如下:
(MONDAY)2011-12-15输入将于2011-12-05返回。
(FRIDAY)的输入2011-12-15将返回2011-12-02。
该行为适用于大多数日历系统。 它使用DAY_OF_WEEK
和DAY_OF_MONTH
字段和DAYS
单位,并假定为期七天。
dayOfWeek
- 星期几,不为空
public static TemporalAdjuster lastInMonth(DayOfWeek dayOfWeek)
ISO日历系统的行为如下:
(MONDAY)2011-12-15的输入将返回2011-12-26。
(FRIDAY)的输入2011-12-15将返回2011-12-30。
该行为适用于大多数日历系统。 它使用DAY_OF_WEEK
和DAY_OF_MONTH
字段和DAYS
单位,并假定为期七天。
dayOfWeek
- 星期几,不为空
public static TemporalAdjuster dayOfWeekInMonth(int ordinal, DayOfWeek dayOfWeek)
ISO日历系统的行为如下:
(1,TUESDAY)的输入2011-12-15将返回2011-12-06。
(2,TUESDAY)的输入2011-12-15将返回2011-12-13。
(3,TUESDAY)的输入2011-12-15将返回2011-12-20。
(4,TUESDAY)的输入2011-12-15将返回2011-12-27。
(5,TUESDAY)的输入2011-12-15将返回2012-01-03。
(-1,TUESDAY)的输入2011-12-15将返回2011-12-27(上个月)。
(-4,TUESDAY)的输入2011-12-15将于2011-12-06(上个月前3周)返回。
(-5,TUESDAY)的输入2011-12-15将于2011-11-29(上个月前4周)返回。
(0,TUESDAY)的输入2011-12-15将返回2011-11-29(上个月的最后一个)。
对于正序或零序,算法相当于找到在该月内匹配的第一个星期几,然后向其中添加数周。 对于负序数,该算法相当于找到在该月内匹配的最后一个星期,然后减去数周。 星期的序数不被验证,并且根据该算法被宽容地解释。 该定义意味着零的序数找到上个月的最后一个匹配的星期几。
该行为适用于大多数日历系统。 它使用DAY_OF_WEEK
和DAY_OF_MONTH
字段和DAYS
单位,并假定为期七天。
ordinal
- 本月内的一周,无限,但通常为-5至5
dayOfWeek
- 星期几,不为空
public static TemporalAdjuster next(DayOfWeek dayOfWeek)
ISO日历系统的行为如下:
参数(MONDAY)的输入2011-01-15(星期六)将返回2011-01-17(两天后)。
参数(WEDNESDAY)2011-01-15(星期六)的输入将返回2011-01-19(四天后)。
输入2011-01-15(星期六)参数(SATURDAY)将返回2011-01-22(七天后)。
该行为适用于大多数日历系统。 它使用DAY_OF_WEEK
字段和DAYS
单位,并假设为期七周。
dayOfWeek
- 将日期移到的星期几,不为空
public static TemporalAdjuster nextOrSame(DayOfWeek dayOfWeek)
ISO日历系统的行为如下:
参数(MONDAY)的输入2011-01-15(星期六)将返回2011-01-17(两天后)。
参数(WEDNESDAY)2011-01-15(星期六)的输入将返回2011-01-19(四天后)。
参数(SATURDAY)的输入2011-01-15(星期六)将返回2011-01-15(与输入相同)。
该行为适用于大多数日历系统。 它使用DAY_OF_WEEK
字段和DAYS
单位,并假设为期七周。
dayOfWeek
- 检查或移动日期的星期几,不为空
public static TemporalAdjuster previous(DayOfWeek dayOfWeek)
ISO日历系统的行为如下:
参数(MONDAY)的输入2011-01-15(星期六)将返回2011-01-10(五天前)。
参数(WEDNESDAY)的输入2011-01-15(星期六)将返回2011-01-12(前三天)。
输入2011-01-15(星期六)参数(SATURDAY)将返回2011-01-08(七天前)。
该行为适用于大多数日历系统。 它使用DAY_OF_WEEK
字段和DAYS
单位,并假定为期七周。
dayOfWeek
- 将日期移动到的星期几,不为空
public static TemporalAdjuster previousOrSame(DayOfWeek dayOfWeek)
ISO日历系统的行为如下:
参数(MONDAY)的输入2011-01-15(星期六)将返回2011-01-10(五天前)。
参数(WEDNESDAY)的输入2011-01-15(星期六)将返回2011-01-12(前三天)。
参数(SATURDAY)的输入2011-01-15(星期六)将返回2011-01-15(与输入相同)。
该行为适用于大多数日历系统。 它使用DAY_OF_WEEK
字段和DAYS
单位,并假定为期七天。
dayOfWeek
- 检查或移动日期的星期几,不为空