- 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 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- 基于日期的调整器,不为空 - 结果
- 时间调整器包装在日期调整器上,不为空
-
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
-
-