- java.lang.Object
-
- java.time.temporal.TemporalAdjusters
-
public final class TemporalAdjustersextends 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)
,因为在代码中读取它会更加清晰。该类包含一组标准的调整器,可用作静态方法。 这些包括:
- 找到该月的第一天或最后一天
- 找到下个月的第一天
- 找到一年中的第一天或最后一天
- 找到明年的第一天
- 在一个月内找到第一天或最后一天,例如“六月的第一个星期三”
- 找到下一个或上一个星期的某一天,例如“下周四”
- 实现要求:
- 静态方法提供的所有实现都是不可变的。
- 从以下版本开始:
- 1.8
- 另请参见:
-
TemporalAdjuster
-
-
方法摘要
所有方法 静态方法 具体的方法 变量和类型 方法 描述 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
- 基于日期的调整器,不为null - 结果
- 时间调整器包装在日期调整器上,而不是null
-
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);
- 结果
- 下个月调整员的第一天,不是空的
-
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);
- 结果
- 最后一天的调整员,不是空的
-
firstDayOfNextYear
public static TemporalAdjuster firstDayOfNextYear()
返回“明年的第一天”调整器,它将新的日期设置为下一年的第一天。ISO日历系统的行为如下:
输入2011-01-15将返回2012-01-01。该行为适用于大多数日历系统。 它相当于:
temporal.with(DAY_OF_YEAR, 1).plus(1, YEARS);
- 结果
- 下个月调整员的第一天,不是空的
-
firstInMonth
public static TemporalAdjuster firstInMonth(DayOfWeek dayOfWeek)
返回月份调整器中的第一个,它在同一个月中返回第一个匹配的星期几的新日期。 这用于“三月的第一个星期二”等表达式。ISO日历系统的行为如下:
(星期一)的输入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)
返回月份调整器中的最后一个,它返回同一个月中与上一个匹配的星期几相关的新日期。 这用于“三月的最后一个星期二”等表达式。ISO日历系统的行为如下:
(星期一)的输入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)
返回月份调整器中的星期几,它根据月份返回序号星期几的新日期。 这用于“三月的第二个星期二”等表达式。ISO日历系统的行为如下:
(1,TUESDAY)的输入2011-12-15将于2011-12-06返回。
(2,星期二)的输入2011-12-15将返回2011-12-13。
(3,星期二)的输入2011-12-15将返回2011-12-20。
(4,星期二)的输入2011-12-15将返回2011-12-27。
(5,星期二)的输入2011-12-15将返回2012-01-03。
(1,TUESDAY)的输入2011-12-15将返回2011-12-27(月末)。
( - 4,星期二)的输入2011-12-15将返回2011-12-06(前一个月的3个星期)。
( - 5,星期二)输入2011-12-15将返回2011-11-29(前一个月前4周)。
(0,星期二)的输入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日历系统的行为如下:
参数(MONDAY)的输入2011-01-15(星期六)将返回2011-01-17(两天后)。
参数(WEDNESDAY)的输入2011-01-15(星期六)将返回2011-01-19(四天后)。
参数(星期六)的输入2011-01-15(星期六)将返回2011-01-22(七天后)。该行为适用于大多数日历系统。 它使用
DAY_OF_WEEK
字段和DAYS
单位,并假设每周七天。- 参数
-
dayOfWeek
- 将日期移至的星期几,而不是null - 结果
- 下一天的调整器,不是空的
-
nextOrSame
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
- 检查或移动日期的星期几,而不是null - 结果
- 下周或同一天的调整器,不是空的
-
previous
public static TemporalAdjuster previous(DayOfWeek dayOfWeek)
返回上一周的调整程序,该调整程序将日期调整为调整日期之前指定的星期几的第一次出现。ISO日历系统的行为如下:
参数(MONDAY)的输入2011-01-15(星期六)将返回2011-01-10(五天前)。
参数(WEDNESDAY)的输入2011-01-15(星期六)将返回2011-01-12(三天前)。
参数(星期六)的输入2011-01-15(星期六)将返回2011-01-08(七天前)。该行为适用于大多数日历系统。 它使用
DAY_OF_WEEK
字段和DAYS
单位,并假设每周七天。- 参数
-
dayOfWeek
- 将日期移至的星期几,而不是null - 结果
- 前一天的调整器,不是空的
-
previousOrSame
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
- 检查或移动日期的星期几,而不是null - 结果
- the previous-or-same day-of-week adjuster, not null
-
-