- 含まれているクラス:
- Calendar
Calendar.Builder
は、さまざまな日付/時間パラメータからCalendar
を作成するために使用されます。
Calendar
を日付/時間値に設定する方法は2つあります。 1つは、インスタント・パラメータをエポックからのミリ秒単位のオフセットに設定する方法です。 もう1つは、個々のフィールド・パラメータ(YEAR
など)をそれぞれの目的の値に設定する方法です。 これらの2つの方法を組み合せて使用することはできません。 インスタントと個々のフィールドの両方を設定しようとすると、IllegalStateException
がスローされます。 ただし、インスタントまたはフィールド・パラメータの以前の値をオーバーライドすることはできます。
日付または時間(あるいはその両方)を決めるのに十分なフィールド・パラメータが指定されない場合は、Calendar
の作成時にカレンダ固有のデフォルト値が使用されます。 たとえば、グレゴリオ暦に対してYEAR
値が指定されない場合は、1970が使用されます。 フィールド・パラメータ間でなんらかの競合が発生した場合は、解決ルールが適用されます。 このため、フィールド設定の順番は重要です。
日付/時間パラメータの他に、ロケール、タイムゾーン、週定義、および非厳密モードのパラメータも設定できます。
例
使用例を次に示します。 サンプル・コードでは、Calendar
の定数が静的にインポートされるものと想定します。
ISO 8601準拠の週パラメータを使用すると月曜日が週の最初の曜日になるため、次のコードは2012-12-31という(グレゴリオ暦の)日付でCalendar
を生成します。
Calendar cal = new Calendar.Builder().setCalendarType("iso8601") .setWeekDate(2013, 1, MONDAY).build();
次のコードは、デフォルトのERA
がHeisei(1989年1月8日から始まる)であると仮定して、(グレゴリオ暦の)1989-01-08という日付で日本のCalendar
を生成します。
Calendar cal = new Calendar.Builder().setCalendarType("japanese") .setFields(YEAR, 1, DAY_OF_YEAR, 1).build();
- 導入されたバージョン:
- 1.8
- 関連項目:
Calendar.getInstance(TimeZone, Locale)
,Calendar.fields
-
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明build()
setterメソッドによって設定されたパラメータで構成されるCalendar
を返します。set(int field, int value)
field
パラメータを指定されたvalue
に設定します。setCalendarType(String type)
カレンダ・タイプ・パラメータを指定されたtype
に設定します。setDate(int year, int month, int dayOfMonth)
日付フィールドのパラメータをyear
、month
およびdayOfMonth
で指定された値に設定します。setFields(int... fieldValuePairs)
フィールドのパラメータを、フィールドとその値のペアであるfieldValuePairs
で指定された値に設定します。setInstant(long instant)
インスタント・パラメータを指定されたinstant
値(Epochからのミリ秒単位のオフセット)に設定します。setInstant(Date instant)
インスタント・パラメータをDate
で指定されたinstant
値に設定します。setLenient(boolean lenient)
非厳密モード・パラメータをlenient
で指定された値に設定します。ロケール・パラメータを指定されたlocale
に設定します。setTimeOfDay(int hourOfDay, int minute, int second)
時刻フィールドのパラメータを、hourOfDay
、minute
およびsecond
で指定された値に設定します。setTimeOfDay(int hourOfDay, int minute, int second, int millis)
時刻フィールドのパラメータを、hourOfDay
、minute
、second
およびmillis
で指定された値に設定します。setTimeZone(TimeZone zone)
タイムゾーン・パラメータを指定されたzone
に設定します。setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
週ベースの日付パラメータを、指定された日付指示子(暦週の基準年、年の何週目かを表す値および曜日)を含む値に設定します。setWeekDefinition(int firstDayOfWeek, int minimalDaysInFirstWeek)
週定義パラメータを、年の最初の週を決定する際に使用されるfirstDayOfWeek
とminimalDaysInFirstWeek
で指定された値に設定します。
-
コンストラクタの詳細
-
ビルダー
public Builder()Calendar.Builder
を構築します。
-
-
メソッドの詳細
-
setInstant
public Calendar.Builder setInstant(long instant)インスタント・パラメータを指定されたinstant
値(Epochからのミリ秒単位のオフセット)に設定します。- パラメータ:
instant
- エポックからのミリ秒単位のオフセット- 戻り値:
- この
Calendar.Builder
- 例外:
IllegalStateException
- フィールド・パラメータのいずれかがすでに設定されている場合- 関連項目:
Calendar.setTime(Date)
,Calendar.setTimeInMillis(long)
,Calendar.time
-
setInstant
public Calendar.Builder setInstant(Date instant)インスタント・パラメータをDate
で指定されたinstant
値に設定します。 このメソッドは、setInstant(instant.getTime())
の呼出しと同等です。- パラメータ:
instant
- エポックからのミリ秒単位のオフセットを表すDate
- 戻り値:
- この
Calendar.Builder
- 例外:
NullPointerException
-instant
がnull
である場合IllegalStateException
- フィールド・パラメータのいずれかがすでに設定されている場合- 関連項目:
Calendar.setTime(Date)
,Calendar.setTimeInMillis(long)
,Calendar.time
-
set
public Calendar.Builder set(int field, int value)field
パラメータを指定されたvalue
に設定します。field
は、DAY_OF_MONTH
などのCalendar.fields
へのインデックスです。 このメソッドでは、フィールド値の検証は行われません。 範囲外の値は、Calendar
の作成時に、非厳密モードで正規化されるか、厳密モードで無効な値として検出されます。- パラメータ:
field
-Calendar
フィールドのインデックスvalue
- フィールドの値- 戻り値:
- この
Calendar.Builder
- 例外:
IllegalArgumentException
-field
が無効の場合IllegalStateException
- インスタント値がすでに設定されている場合、またはフィールドの設定回数が多すぎる(およそInteger.MAX_VALUE
回)場合。- 関連項目:
Calendar.set(int, int)
-
setFields
public Calendar.Builder setFields(int... fieldValuePairs)フィールドのパラメータを、フィールドとその値のペアであるfieldValuePairs
で指定された値に設定します。 次に例を示します。setFields(Calendar.YEAR, 2013, Calendar.MONTH, Calendar.DECEMBER, Calendar.DAY_OF_MONTH, 23);
これは、次の一連のset
呼出しに相当します。set(Calendar.YEAR, 2013) .set(Calendar.MONTH, Calendar.DECEMBER) .set(Calendar.DAY_OF_MONTH, 23);
- パラメータ:
fieldValuePairs
- フィールドと値のペア- 戻り値:
- この
Calendar.Builder
- 例外:
NullPointerException
-fieldValuePairs
がnull
である場合IllegalArgumentException
- いずれかのフィールドが無効な場合、またはfieldValuePairs.length
が奇数の場合。IllegalStateException
- インスタント値がすでに設定されている場合、またはフィールドの設定回数が多すぎる(およそInteger.MAX_VALUE
回)場合。
-
setDate
public Calendar.Builder setDate(int year, int month, int dayOfMonth)日付フィールドのパラメータをyear
、month
およびdayOfMonth
で指定された値に設定します。 このメソッドは、次の呼出しと同等です。setFields(Calendar.YEAR, year, Calendar.MONTH, month, Calendar.DAY_OF_MONTH, dayOfMonth);
- パラメータ:
year
-YEAR
の値month
-MONTH
の値(月の番号付けは0ベース)。dayOfMonth
-DAY_OF_MONTH
の値- 戻り値:
- この
Calendar.Builder
-
setTimeOfDay
public Calendar.Builder setTimeOfDay(int hourOfDay, int minute, int second)時刻フィールドのパラメータを、hourOfDay
、minute
およびsecond
で指定された値に設定します。 このメソッドは、次の呼出しと同等です。setTimeOfDay(hourOfDay, minute, second, 0);
- パラメータ:
hourOfDay
-HOUR_OF_DAY
の値(24時間クロック)minute
-MINUTE
の値second
-SECOND
の値- 戻り値:
- この
Calendar.Builder
-
setTimeOfDay
public Calendar.Builder setTimeOfDay(int hourOfDay, int minute, int second, int millis)時刻フィールドのパラメータを、hourOfDay
、minute
、second
およびmillis
で指定された値に設定します。 このメソッドは、次の呼出しと同等です。setFields(Calendar.HOUR_OF_DAY, hourOfDay, Calendar.MINUTE, minute, Calendar.SECOND, second, Calendar.MILLISECOND, millis);
- パラメータ:
hourOfDay
-HOUR_OF_DAY
の値(24時間クロック)minute
-MINUTE
の値second
-SECOND
の値millis
-MILLISECOND
の値- 戻り値:
- この
Calendar.Builder
-
setWeekDate
public Calendar.Builder setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)週ベースの日付パラメータを、指定された日付指示子(暦週の基準年、年の何週目かを表す値および曜日)を含む値に設定します。指定されたカレンダが暦週日付をサポートしていない場合、
build
メソッドはIllegalArgumentException
をスローします。- パラメータ:
weekYear
- 暦週の基準年weekOfYear
-weekYear
に基づく週番号dayOfWeek
- 曜日の値。DAY_OF_WEEK
フィールドの定数(SUNDAY
、...、SATURDAY
)の1つ。- 戻り値:
- この
Calendar.Builder
- 関連項目:
Calendar.setWeekDate(int, int, int)
,Calendar.isWeekDateSupported()
-
setTimeZone
public Calendar.Builder setTimeZone(TimeZone zone)タイムゾーン・パラメータを指定されたzone
に設定します。 このCalendar.Builder
にタイム・ゾーン・パラメータが指定されていない場合、default {@code TimeZone}はbuild
メソッドで使用されます。- パラメータ:
zone
-TimeZone
- 戻り値:
- この
Calendar.Builder
- 例外:
NullPointerException
-zone
がnull
である場合- 関連項目:
Calendar.setTimeZone(TimeZone)
-
setLenient
public Calendar.Builder setLenient(boolean lenient)非厳密モード・パラメータをlenient
で指定された値に設定します。 このCalendar.Builder
に非厳密パラメータが指定されていない場合は、非厳密モードがbuild
メソッドで使用されます。- パラメータ:
lenient
- 非厳密モードの場合はtrue
。厳密モードの場合はfalse
- 戻り値:
- この
Calendar.Builder
- 関連項目:
Calendar.setLenient(boolean)
-
setCalendarType
public Calendar.Builder setCalendarType(String type)カレンダ・タイプ・パラメータを指定されたtype
に設定します。 このメソッドで指定されるカレンダ・タイプは、localeで指定される明示的または暗黙的などのカレンダ・タイプよりも優先されます。Calendar.getAvailableCalendarTypes
メソッドによって返される使用可能なカレンダ・タイプの他に、「gregory
」の別名として"gregorian"
および"iso8601"
もこのメソッドで使用できます。- パラメータ:
type
- カレンダ・タイプ- 戻り値:
- この
Calendar.Builder
- 例外:
NullPointerException
-type
がnull
である場合IllegalArgumentException
-type
が不明の場合IllegalStateException
- 別のカレンダ・タイプがすでに設定されている場合- 関連項目:
Calendar.getCalendarType()
,Calendar.getAvailableCalendarTypes()
-
setLocale
public Calendar.Builder setLocale(Locale locale)ロケール・パラメータを指定されたlocale
に設定します。 このCalendar.Builder
にロケールが指定されていない場合は、Locale.Category.FORMAT
用のdefault {@code Locale}が使用されます。setCalendarType
メソッドの呼出しによってカレンダ・タイプが明示的に指定されない場合は、Locale
の値を使って、作成されるCalendar
のタイプが決められます。setWeekDefinition
メソッドの呼出しによって週定義パラメータが明示的に指定されない場合は、Locale
のデフォルト値が使用されます。- パラメータ:
locale
-Locale
- 戻り値:
- この
Calendar.Builder
- 例外:
NullPointerException
-locale
がnull
である場合- 関連項目:
Calendar.getInstance(Locale)
-
setWeekDefinition
public Calendar.Builder setWeekDefinition(int firstDayOfWeek, int minimalDaysInFirstWeek)週定義パラメータを、年の最初の週を決定する際に使用されるfirstDayOfWeek
とminimalDaysInFirstWeek
で指定された値に設定します。 このメソッドで指定されるパラメータは、localeで指定されるデフォルト値よりも優先されます。- パラメータ:
firstDayOfWeek
- 週の最初の曜日。Calendar.SUNDAY
からCalendar.SATURDAY
のいずれかminimalDaysInFirstWeek
- 最初の週の最小日数(1..7)- 戻り値:
- この
Calendar.Builder
- 例外:
IllegalArgumentException
-firstDayOfWeek
またはminimalDaysInFirstWeek
が無効な場合- 関連項目:
Calendar.getFirstDayOfWeek()
,Calendar.getMinimalDaysInFirstWeek()
-
build
public Calendar build()setterメソッドによって設定されたパラメータで構成されるCalendar
を返します。setCalendarType
メソッドまたはlocaleによって指定されたカレンダ・タイプを使って、作成されるCalendar
が決められます。 明示的なカレンダ・タイプが指定されない場合は、そのロケールのデフォルト・カレンダが作成されます。カレンダ・タイプが「
iso8601
」である場合は、先発グレゴリオ暦になるように、GregorianCalendar
のグレゴリオ暦切換え日がDate(Long.MIN_VALUE)
に設定されます。 その週定義パラメータも、ISO 8601標準に準拠するように設定されます。"iso8601"
で作成されたGregorianCalendar
のgetCalendarType
メソッドが"gregory"
を返すことに注意してください。ロケールおよびタイムゾーンのパラメータが明示的に指定されなかった場合は、デフォルト値が使用されます。
ロケールに"tz" 「Unicode拡張」のタイムゾーンが含まれていて、タイムゾーンが明示的に指定されていない場合は、ロケールのタイムゾーンが使用されます。
範囲外のフィールド値があれば、非厳密モードで正規化されるか、厳密モードで無効な値として検出されます。
- 戻り値:
- この
Calendar.Builder
のパラメータを使って作成されたCalendar
- 例外:
IllegalArgumentException
- カレンダ・タイプが不明の場合、無効なフィールド値が厳密モードで指定されている場合、または暦週日付をサポートしていないカレンダ・タイプに対して暦週日付が指定されている場合。- 関連項目:
Calendar.getInstance(TimeZone, Locale)
,Locale.getDefault(Locale.Category)
,TimeZone.getDefault()
-