Module  java.base
软件包  java.time.temporal

Class 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
    • 方法详细信息

      • ofDateAdjuster

        public static TemporalAdjuster ofDateAdjuster​(UnaryOperator<LocalDate> dateBasedAdjuster)
        获取一个TemporalAdjuster包裹日期调整器。

        TemporalAdjuster是基于Temporal接口。 该方法允许从LocalDateLocalDate的调整,以匹配基于时间的界面。 这是为了方便使用户编写的调整器更简单。

        一般来说,用户编写的调整器应该是静态常量:

           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_WEEKDAY_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_WEEKDAY_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_WEEKDAY_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