モジュール java.base
パッケージ java.time.temporal

クラスTemporalAdjusters


  • public final class TemporalAdjusters
    extends Object
    一般的かつ有用なTemporalAdjustersです。

    アジャスタは、時間的オブジェクトを変更するための主要なツールです。 それらは、戦略デザイン・パターンのように、調整のプロセスを外部化して異なるアプローチを可能にするために存在します。 例として、週末を避けて日付を設定するアジャスタや、日付を月の最後の日に設定するアジャスタなどがあります。

    TemporalAdjusterには、2つの同等な使用方法があります。 1つ目は、インタフェース上でメソッドを直接呼び出す方法です。 2つ目は、Temporal.with(TemporalAdjuster)を使用する方法です。

       // these two lines are equivalent, but the second approach is recommended
       temporal = thisAdjuster.adjustInto(temporal);
       temporal = temporal.with(thisAdjuster);
     
    コード内での読みやすさが大幅に向上するため、2つ目のアプローチ(with(TemporalAdjuster))を使用することをお薦めします。

    このクラスには、staticメソッドとして使用できるアジャスタの標準セットが含まれています。 これらの機能を次に示します。

    • 月の最初または最後の日を見つける
    • 翌月の最初の日を見つける
    • その年の最初または最後の日を見つける
    • 翌年の最初の日を見つける
    • 月内の最初または最後の曜日(「6月の最初の水曜日」など)を見つける
    • 次または前の曜日(「次の木曜日」など)を見つける

    実装要件:
    staticメソッドによって提供される実装はすべて不変です。
    導入されたバージョン:
    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への調整をtemporalベースのインタフェースと一致するようにラップできます。 これは、ユーザーが記述するアジャスタをより簡単にするために便宜上提供されています。

        一般に、ユーザーが記述するアジャスタはstatic定数になります。

        
          static TemporalAdjuster TWO_DAYS_LATER =
               TemporalAdjusters.ofDateAdjuster(date -> date.plusDays(2));
         

        パラメータ:
        dateBasedAdjuster - 日付ベースのアジャスタ、nullでない
        戻り値:
        日付アジャスタに対するtemporalアジャスタのラッピング、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);
         

        戻り値:
        最初の「月の日」アジャスタ、nullでない
      • 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);
         

        戻り値:
        最後の「月の日」アジャスタ、nullでない
      • 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);
         

        戻り値:
        最初の「年の日」アジャスタ、nullでない
      • 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単位を使用し、1週間を7日とみなします。

        パラメータ:
        dayOfWeek - 曜日、nullでない
        戻り値:
        月の最初の日アジャスタ、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単位を使用し、1週間を7日とみなします。

        パラメータ:
        dayOfWeek - 曜日、nullでない
        戻り値:
        月の最初の日アジャスタ、nullでない
      • dayOfWeekInMonth

        public static TemporalAdjuster dayOfWeekInMonth​(int ordinal,
                                                        DayOfWeek dayOfWeek)
        月のスターで曜日を返します。月のスターでは、その月に基づいて序数の曜日が返されます。 これは、3月の第2火曜日のような表現のために使用されます。

        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(前月の最後)が返されます。

        ordinalが正またはゼロの場合のアルゴリズムは、その月内で一致する最初の曜日を見つけて、それに週数を加算するのと同等です。 ordinalが負の場合のアルゴリズムは、その月内で一致する最後の曜日を見つけて、それから週数を減算するのと同等です。 週の序数は検証されず、このアルゴリズムに従って緩やかに解釈されます。 この定義によれば、ordinalがゼロの場合は、前月の最後に一致する曜日が検索されます。

        この動作は、ほとんどの暦体系での使用に適しています。 DAY_OF_WEEKおよびDAY_OF_MONTHフィールドとDAYS単位を使用し、1週間を7日とみなします。

        パラメータ:
        ordinal - その月内の週。制限はないが、通常は-5から5まで
        dayOfWeek - 曜日、nullでない
        戻り値:
        月内の曜日アジャスタ、nullでない
      • next

        public static TemporalAdjuster next​(DayOfWeek dayOfWeek)
        調整対象の日付より後で指定された曜日が最初に出現する日に日付を調整する、次の曜日アジャスタを返します。

        ISO暦体系では、次のように動作します。
        パラメータ(MONDAY)に対する入力2011-01-15(土曜日)によって、2011-01-17(2日後)が返されます。

        パラメータ(WEDNESDAY)に対する入力2011-01-15(土曜日)によって、2011-01-19(4日後)が返されます。

        パラメータ(SATURDAY)に対する入力2011-01-15(土曜日)によって、2011-01-22(7日後)が返されます。

        この動作は、ほとんどの暦体系での使用に適しています。 DAY_OF_WEEKフィールドとDAYS単位を使用し、1週間を7日とみなします。

        パラメータ:
        dayOfWeek - 日付の移動先となる曜日、nullでない
        戻り値:
        次の曜日アジャスタ、nullでない
      • nextOrSame

        public static TemporalAdjuster nextOrSame​(DayOfWeek dayOfWeek)
        調整対象の日付より後で指定された曜日が最初に出現する日に日付を調整する「次の曜日または同日」アジャスタを返します(ただし、日付がすでにその曜日だった場合は同じオブジェクトが返される)。

        ISO暦体系では、次のように動作します。
        パラメータ(MONDAY)に対する入力2011-01-15(土曜日)によって、2011-01-17(2日後)が返されます。

        パラメータ(WEDNESDAY)に対する入力2011-01-15(土曜日)によって、2011-01-19(4日後)が返されます。

        パラメータ(SATURDAY)に対する入力2011-01-15(土曜日)によって、2011-01-15(入力と同じ)が返されます。

        この動作は、ほとんどの暦体系での使用に適しています。 DAY_OF_WEEKフィールドとDAYS単位を使用し、1週間を7日とみなします。

        パラメータ:
        dayOfWeek - 確認する、または日付の移動先となる曜日、nullでない
        戻り値:
        次または同じ曜日アジャスタ、nullでない
      • previous

        public static TemporalAdjuster previous​(DayOfWeek dayOfWeek)
        調整対象の日付より前で指定された曜日が最初に出現する日に日付を調整する、前の曜日アジャスタを返します。

        ISO暦体系では、次のように動作します。
        パラメータ(MONDAY)に対する入力2011-01-15(土曜日)によって、2011-01-10(5日前)が返されます。

        パラメータ(WEDNESDAY)に対する入力2011-01-15(土曜日)によって、2011-01-12(3日前)が返されます。

        パラメータ(SATURDAY)に対する入力2011-01-15(土曜日)によって、2011-01-08(7日前)が返されます。

        この動作は、ほとんどの暦体系での使用に適しています。 DAY_OF_WEEKフィールドとDAYS単位を使用し、1週間を7日とみなします。

        パラメータ:
        dayOfWeek - 日付の移動先となる曜日、nullでない
        戻り値:
        前の曜日アジャスタ、nullでない
      • previousOrSame

        public static TemporalAdjuster previousOrSame​(DayOfWeek dayOfWeek)
        調整対象の日付より前で指定された曜日が最初に出現する日に日付を調整する「前の曜日または同日」アジャスタを返します(ただし、日付がすでにその曜日だった場合は同じオブジェクトが返される)。

        ISO暦体系では、次のように動作します。
        パラメータ(MONDAY)に対する入力2011-01-15(土曜日)によって、2011-01-10(5日前)が返されます。

        パラメータ(WEDNESDAY)に対する入力2011-01-15(土曜日)によって、2011-01-12(3日前)が返されます。

        パラメータ(SATURDAY)に対する入力2011-01-15(土曜日)によって、2011-01-15(入力と同じ)が返されます。

        この動作は、ほとんどの暦体系での使用に適しています。 DAY_OF_WEEKフィールドとDAYS単位を使用し、1週間を7日とみなします。

        パラメータ:
        dayOfWeek - 確認する、または日付の移動先となる曜日、nullでない
        戻り値:
        前または同じ曜日アジャスタ、nullでない