- 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),因为在代码中读取它会更加清晰。该类包含一组标准的调整器,可用作静态方法。 这些包括:
- 找到该月的第一天或最后一天
- 找到下个月的第一天
- 找到一年中的第一天或最后一天
- 找到明年的第一天
- 在一个月内找到第一天或最后一天,例如“六月的第一个星期三”
- 找到下一个或上一个星期的某一天,例如“下周四”
- 实现要求:
- 静态方法提供的所有实现都是不可变的。
- 从以下版本开始:
- 1.8
- 另请参见:
-
TemporalAdjuster
-
-
方法摘要
所有方法 静态方法 具体的方法 变量和类型 方法 描述 static TemporalAdjusterdayOfWeekInMonth(int ordinal, DayOfWeek dayOfWeek)返回月份调整器中的星期几,它根据月份返回序号星期几的新日期。static TemporalAdjusterfirstDayOfMonth()返回“第一天的月份”调整程序,它返回设置为当前月份第一天的新日期。static TemporalAdjusterfirstDayOfNextMonth()返回“下个月的第一天”调整程序,它返回设置为下个月第一天的新日期。static TemporalAdjusterfirstDayOfNextYear()返回“明年的第一天”调整器,它将新的日期设置为下一年的第一天。static TemporalAdjusterfirstDayOfYear()返回“年中的第一天”调整程序,它返回设置为当前年度第一天的新日期。static TemporalAdjusterfirstInMonth(DayOfWeek dayOfWeek)返回月份调整器中的第一个,它在同一个月中返回第一个匹配的星期几的新日期。static TemporalAdjusterlastDayOfMonth()返回“最后一天”调整器,它返回设置为当前月份最后一天的新日期。static TemporalAdjusterlastDayOfYear()返回“年末的最后一天”调整器,它返回设置为当前年度最后一天的新日期。static TemporalAdjusterlastInMonth(DayOfWeek dayOfWeek)返回月份调整器中的最后一个,它返回同一个月中与上一个匹配的星期几相关的新日期。static TemporalAdjusternext(DayOfWeek dayOfWeek)返回下一个星期几调整器,它将日期调整为调整日期后指定星期几的第一次出现。static TemporalAdjusternextOrSame(DayOfWeek dayOfWeek)返回下一个或相同的星期几调整器,它将日期调整为调整日期后指定星期几的第一次出现,除非它已经在那一天,在这种情况下返回相同的对象。static TemporalAdjusterofDateAdjuster(UnaryOperator<LocalDate> dateBasedAdjuster)获得包裹日期调整器的TemporalAdjuster。static TemporalAdjusterprevious(DayOfWeek dayOfWeek)返回上一周的调整程序,该调整程序将日期调整为调整日期之前指定的星期几的第一次出现。static TemporalAdjusterpreviousOrSame(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
-
-