模块  java.base
软件包  java.time.temporal

Interface TemporalAdjuster

  • All Known Subinterfaces:
    ChronoLocalDateChronoLocalDateTime<D>Era
    所有已知实现类:
    DayOfWeekHijrahDateHijrahEraInstantIsoEraJapaneseDateJapaneseEraLocalDateLocalDateTimeLocalTimeMinguoDateMinguoEraMonthMonthDayOffsetDateTimeOffsetTimeThaiBuddhistDateThaiBuddhistEraYearYearMonthZoneOffset
    Functional Interface:
    这是一个功能接口,因此可以用作lambda表达式或方法引用的赋值目标。

    @FunctionalInterfacepublic interface TemporalAdjuster
    调整时态对象的策略。

    调节器是修改时态对象的关键工具。 它们的存在是为了使调整过程外化,允许根据战略设计模式采用不同的方法。 示例可能是设置日期避免周末的调整器,或者将日期设置为月份的最后一天的调整器。

    有两种使用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) ,因为在代码中读取它会更加清晰。

    TemporalAdjusters类包含一组标准的调整器,可用作静态方法。 这些包括:

    • 找到该月的第一天或最后一天
    • 找到下个月的第一天
    • 找到一年中的第一天或最后一天
    • 找到明年的第一天
    • 在一个月内找到第一天或最后一天,例如“六月的第一个星期三”
    • 找到下一个或上一个星期的某一天,例如“下周四”
    实现要求:
    此接口对实现的可变性没有任何限制,但强烈建议使用不变性。
    从以下版本开始:
    1.8
    另请参见:
    TemporalAdjusters
    • 方法详细信息

      • adjustInto

        Temporal adjustInto​(Temporal temporal)
        调整指定的时态对象。

        这使用实现类中封装的逻辑调整指定的时态对象。 示例可能是设置日期避免周末的调整器,或者将日期设置为月份的最后一天的调整器。

        使用此方法有两种等效方法。 第一种是直接调用此方法。 第二种是使用Temporal.with(TemporalAdjuster)

          // these two lines are equivalent, but the second approach is recommended   temporal = thisAdjuster.adjustInto(temporal);   temporal = temporal.with(thisAdjuster); 
        建议使用第二种方法with(TemporalAdjuster) ,因为在代码中阅读更加清晰。
        实现要求:
        实现必须获取输入对象并进行调整。 实现定义了调整的逻辑,并负责记录该逻辑。 它可以使用Temporal上的任何方法来查询时态对象并执行调整。 返回的对象必须具有与输入对象相同的可观察类型

        不得更改输入对象。 相反,必须返回原始的调整副本。 这为不可变和可变的时态对象提供了等效的安全行为。

        输入时间对象可以在除ISO之外的日历系统中。 实现可以选择记录与其他日历系统的兼容性,或者通过querying the chronology拒绝非ISO时态对象。

        可以从多个线程并行调用此方法。 调用时必须是线程安全的。

        参数
        temporal - 要调整的时态对象,而不是null
        结果
        一个具有相同可观察类型的对象,并进行调整,而不是null
        异常
        DateTimeException - 如果无法进行调整
        ArithmeticException - 如果发生数字溢出