- java.lang.Object
-
- java.time.temporal.TemporalAdjusters
-
public final class TemporalAdjusters extends Object
常用和有用的TemporalAdjusters。调整器是修改时间对象的关键工具。 它们存在于外部化调整过程中,根据策略设计模式允许不同的方法。 示例可以是设置日期避免周末的调整器,或者将日期设置为月份的最后一天。
有两种使用
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)
,因为在代码中阅读更清楚。该类包含一组标准的调整器,可作为静态方法使用。 这些包括:
- 找到本月的第一天或最后一天
- 找到下个月的第一天
- 找到一年中的第一个或最后一天
- 找到明年的第一天
- 在一个月内找到第一个或最后一个星期,例如“6月的第一个星期三”
- 找到下一个或前几个星期,例如“下周四”
- 实现要求:
- 静态方法提供的所有实现都是不可变的。
- 从以下版本开始:
- 1.8
- 另请参见:
-
TemporalAdjuster
-
-
方法摘要
所有方法 静态方法 具体的方法 Modifier and Type 方法 描述 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)
返回之前或相同的日期调整器,该调整器将日期调整为在调整日期之前的指定日期的第一次出现,除非已在当天返回相同的对象。
-
-
-
方法详细信息
-
ofDateAdjuster
public static TemporalAdjuster ofDateAdjuster(UnaryOperator<LocalDate> dateBasedAdjuster)
获取一个TemporalAdjuster
包裹日期调整器。TemporalAdjuster
是基于Temporal
接口。 该方法允许从LocalDate
到LocalDate
的调整,以匹配基于时间的界面。 这是为了方便使用户编写的调整器更简单。一般来说,用户编写的调整器应该是静态常量:
static TemporalAdjuster TWO_DAYS_LATER = TemporalAdjusters.ofDateAdjuster(date -> date.plusDays(2));
- 参数
-
dateBasedAdjuster
- 基于日期的调整器,不为空 - 结果
- 时间调整器包装在日期调整器上,不为空
-
firstDayOfMonth
public static TemporalAdjuster firstDayOfMonth()
返回“第一个月的”调整器,它返回设置为当月的第一天的新日期。ISO日历系统的行为如下:
输入2011-01-15将返回2011-01-01。
输入2011-02-15将返回2011-02-01。该行为适用于大多数日历系统。 相当于:
temporal.with(DAY_OF_MONTH, 1);
- 结果
- 第一个月的日子调整,不为零
-
lastDayOfMonth
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);
- 结果
- 最后一个月的调整者,不为零
-
firstDayOfNextMonth
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);
- 结果
- 下个月的第一天调整,不为null
-
firstDayOfYear
public static TemporalAdjuster firstDayOfYear()
返回“一年的第一天”调整器,其返回设置为当前第一天的新日期。ISO日历系统的行为如下:
输入2011-01-15将返回2011-01-01。
输入2011-02-15将返回2011-01-01。该行为适用于大多数日历系统。 相当于:
temporal.with(DAY_OF_YEAR, 1);
- 结果
- 第一个日期调整器,不为零
-
lastDayOfYear
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);
- 结果
- 最后一天的调整者,不是null
-
firstDayOfNextYear
public static TemporalAdjuster firstDayOfNextYear()
返回“明年的第一天”调整器,返回设置为下一年的第一天的新日期。ISO日历系统的行为如下:
输入2011-01-15将返回2012-01-01。该行为适用于大多数日历系统。 相当于:
temporal.with(DAY_OF_YEAR, 1).plus(1, YEARS);
- 结果
- 下个月的第一天调整,不为null
-
firstInMonth
public static TemporalAdjuster firstInMonth(DayOfWeek dayOfWeek)
返回月初调整器,它在同一个月内返回与第一个匹配的星期几的新日期。 这是用于表达,如“3月的第一个星期二”。ISO日历系统的行为如下:
(MONDAY)2011-12-15输入将于2011-12-05返回。
(FRIDAY)的输入2011-12-15将返回2011-12-02。该行为适用于大多数日历系统。 它使用
DAY_OF_WEEK
和DAY_OF_MONTH
字段和DAYS
单位,并假定为期七天。- 参数
-
dayOfWeek
- 星期几,不为空 - 结果
- 第一个月调整,不为null
-
lastInMonth
public static TemporalAdjuster lastInMonth(DayOfWeek dayOfWeek)
返回最近一个月的调整器,它返回与最后一个匹配的星期几相同月份的新日期。 这用于像“3月的最后一个星期二”这样的表达。ISO日历系统的行为如下:
(MONDAY)2011-12-15的输入将返回2011-12-26。
(FRIDAY)的输入2011-12-15将返回2011-12-30。该行为适用于大多数日历系统。 它使用
DAY_OF_WEEK
和DAY_OF_MONTH
字段和DAYS
单位,并假定为期七天。- 参数
-
dayOfWeek
- 星期几,不为空 - 结果
- 第一个月调整,不为null
-
dayOfWeekInMonth
public static TemporalAdjuster dayOfWeekInMonth(int ordinal, DayOfWeek dayOfWeek)
返回月份调整器中的星期几,该日期将根据月份返回具有序数星期的新日期。 这用于像“3月的第二个星期二”这样的表达。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
- 星期几,不为空 - 结果
- 月中的日期调整器,不为空
-
next
public static TemporalAdjuster next(DayOfWeek dayOfWeek)
返回下一个星期的调整器,该调整器将日期调整为在调整日期之后的指定日期的第一次出现。ISO日历系统的行为如下:
输入2011-01-15(星期六)参数(MONDAY)将返回2011-01-17(两天后)。
参数(WEDNESDAY)2011-01-15(星期六)的输入将返回2011-01-19(四天后)。
输入2011-01-15(星期六)参数(SATURDAY)将返回2011-01-22(七天后)。该行为适用于大多数日历系统。 它使用
DAY_OF_WEEK
字段和DAYS
单位,并假定为期七天。- 参数
-
dayOfWeek
- 将日期移动到的星期几,不为空 - 结果
- 下一个星期的调整器,不为null
-
nextOrSame
public static TemporalAdjuster nextOrSame(DayOfWeek dayOfWeek)
返回下一个或相同的星期几调整器,该调整器将日期调整为在调整日期之后指定的星期几的第一次出现,除非它已在当天在同一对象被返回。ISO日历系统的行为如下:
输入2011-01-15(星期六)参数(MONDAY)将返回2011-01-17(两天后)。
参数(WEDNESDAY)2011-01-15(星期六)的输入将返回2011-01-19(四天后)。
参数(SATURDAY)的输入2011-01-15(星期六)将返回2011-01-15(与输入相同)。该行为适用于大多数日历系统。 它使用
DAY_OF_WEEK
字段和DAYS
单位,并假定为期七天。- 参数
-
dayOfWeek
- 检查或移动日期的星期几,不为空 - 结果
- 下一个或相同的日期调整器,不为null
-
previous
public static TemporalAdjuster previous(DayOfWeek dayOfWeek)
返回上一个星期的调整器,该调整器将日期调整为在调整日期之前的指定日期的第一次出现。ISO日历系统的行为如下:
参数(MONDAY)的输入2011-01-15(星期六)将返回2011-01-10(五天前)。
输入2011-01-15(星期六)参数(WEDNESDAY)将返回2011-01-12(前三天)。
输入2011-01-15(星期六)参数(SATURDAY)将返回2011-01-08(七天前)。该行为适用于大多数日历系统。 它使用
DAY_OF_WEEK
字段和DAYS
单位,并假定为期七天。- 参数
-
dayOfWeek
- 将日期移动到的星期几,不为空 - 结果
- 前一天的调整器,不为空
-
previousOrSame
public static TemporalAdjuster previousOrSame(DayOfWeek dayOfWeek)
返回之前或相同的日期调整器,该调整器将日期调整为在调整日期之前的指定日期的第一次出现,除非已在当天返回相同的对象。ISO日历系统的行为如下:
参数(MONDAY)的输入2011-01-15(星期六)将返回2011-01-10(五天前)。
输入2011-01-15(星期六)参数(WEDNESDAY)将返回2011-01-12(前三天)。
参数(SATURDAY)的输入2011-01-15(星期六)将返回2011-01-15(与输入相同)。该行为适用于大多数日历系统。 它使用
DAY_OF_WEEK
字段和DAYS
单位,并假定为期七天。- 参数
-
dayOfWeek
- 检查或移动日期的星期几,不为空 - 结果
- the previous-or-same day-of-week adjuster, not null
-
-