アジャスタは、時間的オブジェクトを変更するための主要なツールです。 それらは、戦略デザイン・パターンのように、調整のプロセスを外部化して異なるアプローチを可能にするために存在します。 例として、週末を避けて日付を設定するアジャスタや、日付を月の最後の日に設定するアジャスタなどがあります。
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
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明static TemporalAdjuster
dayOfWeekInMonth
(int ordinal, DayOfWeek dayOfWeek) 月のスターで曜日を返します。月のスターでは、その月に基づいて序数の曜日が返されます。static TemporalAdjuster
現在の月の最初の日に設定された新しい日付を返す「月の最初の日」アジャスタを返します。static TemporalAdjuster
翌月の最初の日に設定された新しい日付を返す「翌月の最初の日」アジャスタを返します。static TemporalAdjuster
翌年の最初の日に設定された新しい日付を返す「翌年の最初の日」アジャスタを返します。static TemporalAdjuster
現在の年の最初の日に設定された新しい日付を返す「年の最初の日」アジャスタを返します。static TemporalAdjuster
firstInMonth
(DayOfWeek dayOfWeek) 一致する最初の曜日を持つ同じ月の新しい日付を返す、月の初出アジャスタを返します。static TemporalAdjuster
現在の月の最後の日に設定された新しい日付を返す「月の最後の日」アジャスタを返します。static TemporalAdjuster
現在の年の最後の日に設定された新しい日付を返す「年の最後の日」アジャスタを返します。static TemporalAdjuster
lastInMonth
(DayOfWeek dayOfWeek) 一致する最後の曜日を持つ同じ月の新しい日付を返す、月の最終アジャスタを返します。static TemporalAdjuster
調整対象の日付より後で指定された曜日が最初に出現する日に日付を調整する、次の曜日アジャスタを返します。static TemporalAdjuster
nextOrSame
(DayOfWeek dayOfWeek) 調整対象の日付より後で指定された曜日が最初に出現する日に日付を調整する「次の曜日または同日」アジャスタを返します(ただし、日付がすでにその曜日だった場合は同じオブジェクトが返される)。static TemporalAdjuster
ofDateAdjuster
(UnaryOperator<LocalDate> dateBasedAdjuster) 日付アジャスタをラップしたTemporalAdjuster
を取得します。static TemporalAdjuster
調整対象の日付より前で指定された曜日が最初に出現する日に日付を調整する、前の曜日アジャスタを返します。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でない
-