public final class TemporalAdjusters extends Object
アジャスタは、時間的オブジェクトを変更するための主要なツールです。それらは、戦略デザイン・パターンのように、調整のプロセスを外部化して異なるアプローチを可能にするために存在します。例として、週末を避けて日付を設定するアジャスタや、日付を月の最後の日に設定するアジャスタなどがあります。
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メソッドとして使用できるアジャスタの標準セットが含まれています。これらの機能を次に示します。
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)
調整対象の日付より前で指定された曜日が最初に出現する日に日付を調整する「前の曜日または同日」アジャスタを返します(ただし、日付がすでにその曜日だった場合は同じオブジェクトが返される)。
|
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でないpublic static TemporalAdjuster firstDayOfMonth()
ISO暦体系では、次のように動作します。
入力2011-01-15によって、2011-01-01が返されます。
入力2011-02-15によって、2011-02-01が返されます。
この動作は、ほとんどの暦体系での使用に適しています。これは次と同等です。
temporal.with(DAY_OF_MONTH, 1);
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);
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);
public static TemporalAdjuster firstDayOfYear()
ISO暦体系では、次のように動作します。
入力2011-01-15によって、2011-01-01が返されます。
入力2011-02-15によって、2011-01-01が返されます。
この動作は、ほとんどの暦体系での使用に適しています。これは次と同等です。
temporal.with(DAY_OF_YEAR, 1);
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);
public static TemporalAdjuster firstDayOfNextYear()
ISO暦体系では、次のように動作します。
入力2011-01-15によって、2012-01-01が返されます。
この動作は、ほとんどの暦体系での使用に適しています。これは次と同等です。
temporal.with(DAY_OF_YEAR, 1).plus(1, YEARS);
public static TemporalAdjuster firstInMonth(DayOfWeek dayOfWeek)
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でないpublic static TemporalAdjuster lastInMonth(DayOfWeek dayOfWeek)
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でないpublic static TemporalAdjuster dayOfWeekInMonth(int ordinal, DayOfWeek dayOfWeek)
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でない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でない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でない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でない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でない バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.