public static class Calendar.Builder extends Object
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();Calendar.getInstance(TimeZone, Locale), Calendar.fields| コンストラクタ | 説明 |
|---|---|
Builder() |
Calendar.Builderを作成します。 |
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
Calendar |
build() |
setterメソッドによって設定されたパラメータで構成される
Calendarを返します。 |
Calendar.Builder |
set(int field, int value) |
fieldパラメータを指定されたvalueに設定します。 |
Calendar.Builder |
setCalendarType(String type) |
カレンダ・タイプ・パラメータを指定された
typeに設定します。 |
Calendar.Builder |
setDate(int year, int month, int dayOfMonth) |
日付フィールドのパラメータを
year、monthおよびdayOfMonthで指定された値に設定します。 |
Calendar.Builder |
setFields(int... fieldValuePairs) |
フィールドのパラメータを、フィールドとその値のペアである
fieldValuePairsで指定された値に設定します。 |
Calendar.Builder |
setInstant(Date instant) |
インスタント・パラメータを
Dateで指定されたinstant値に設定します。 |
Calendar.Builder |
setInstant(long instant) |
インスタント・パラメータを指定された
instant値(Epochからのミリ秒単位のオフセット)に設定します。 |
Calendar.Builder |
setLenient(boolean lenient) |
非厳密モード・パラメータを
lenientで指定された値に設定します。 |
Calendar.Builder |
setLocale(Locale locale) |
ロケール・パラメータを指定された
localeに設定します。 |
Calendar.Builder |
setTimeOfDay(int hourOfDay, int minute, int second) |
時刻フィールドのパラメータを、
hourOfDay、minuteおよびsecondで指定された値に設定します。 |
Calendar.Builder |
setTimeOfDay(int hourOfDay, int minute, int second, int millis) |
時刻フィールドのパラメータを、
hourOfDay、minute、secondおよびmillisで指定された値に設定します。 |
Calendar.Builder |
setTimeZone(TimeZone zone) |
タイムゾーン・パラメータを指定された
zoneに設定します。 |
Calendar.Builder |
setWeekDate(int weekYear, int weekOfYear, int dayOfWeek) |
週ベースの日付パラメータを、指定された日付指示子(暦週の基準年、年の何週目かを表す値および曜日)を含む値に設定します。
|
Calendar.Builder |
setWeekDefinition(int firstDayOfWeek, int minimalDaysInFirstWeek) |
週定義パラメータを、年の最初の週を決定する際に使用される
firstDayOfWeekとminimalDaysInFirstWeekで指定された値に設定します。 |
public Calendar.Builder setInstant(long instant)
instant値(Epochからのミリ秒単位のオフセット)に設定します。instant - エポックからのミリ秒単位のオフセットCalendar.BuilderIllegalStateException - フィールド・パラメータのいずれかがすでに設定されている場合Calendar.setTime(Date), Calendar.setTimeInMillis(long), Calendar.timepublic Calendar.Builder setInstant(Date instant)
Dateで指定されたinstant値に設定します。 このメソッドは、setInstant(instant.getTime())の呼出しと同等です。 instant - エポックからのミリ秒単位のオフセットを表すDateCalendar.BuilderNullPointerException - instantがnullである場合IllegalStateException - フィールド・パラメータのいずれかがすでに設定されている場合Calendar.setTime(Date), Calendar.setTimeInMillis(long), Calendar.timepublic Calendar.Builder set(int field, int value)
fieldパラメータを指定されたvalueに設定します。fieldは、DAY_OF_MONTHなどのCalendar.fieldsへのインデックスです。 このメソッドでは、フィールド値の検証は行われません。 範囲外の値は、Calendarの作成時に、非厳密モードで正規化されるか、厳密モードで無効な値として検出されます。 field - Calendarフィールドのインデックスvalue - フィールドの値Calendar.BuilderIllegalArgumentException - fieldが無効の場合IllegalStateException - インスタント値がすでに設定されている場合、またはフィールドの設定回数が多すぎる(およそInteger.MAX_VALUE回)場合。Calendar.set(int, int)public Calendar.Builder setFields(int... fieldValuePairs)
fieldValuePairsで指定された値に設定します。 たとえば、
setFeilds(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.BuilderNullPointerException - fieldValuePairsがnullである場合IllegalArgumentException - いずれかのフィールドが無効な場合、またはfieldValuePairs.lengthが奇数の場合。IllegalStateException - インスタント値がすでに設定されている場合、またはフィールドの設定回数が多すぎる(およそInteger.MAX_VALUE回)場合。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.Builderpublic 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.Builderpublic 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.Builderpublic Calendar.Builder setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
指定されたカレンダが暦週日付をサポートしていない場合、buildメソッドはIllegalArgumentExceptionをスローします。
weekYear - 暦週の基準年weekOfYear - weekYearに基づく週番号dayOfWeek - 曜日の値。DAY_OF_WEEKフィールドの定数(SUNDAY、...、SATURDAY)の1つ。Calendar.BuilderCalendar.setWeekDate(int, int, int), Calendar.isWeekDateSupported()public Calendar.Builder setTimeZone(TimeZone zone)
zoneに設定します。 このCaledar.Builderにタイムゾーン・パラメータが指定されていない場合は、デフォルトのTimeZoneがbuildメソッドで使用されます。 zone - TimeZoneCalendar.BuilderNullPointerException - zoneがnullである場合Calendar.setTimeZone(TimeZone)public Calendar.Builder setLenient(boolean lenient)
lenientで指定された値に設定します。 このCalendar.Builderに非厳密パラメータが指定されていない場合は、非厳密モードがbuildメソッドで使用されます。 lenient - 非厳密モードの場合はtrue。厳密モードの場合はfalseCalendar.BuilderCalendar.setLenient(boolean)public Calendar.Builder setCalendarType(String type)
typeに設定します。 このメソッドで指定されるカレンダ・タイプは、localeで指定される明示的または暗黙的などのカレンダ・タイプよりも優先されます。
Calendar.getAvailableCalendarTypesメソッドによって返される使用可能なカレンダ・タイプの他に、「gregory」の別名として"gregorian"および"iso8601"もこのメソッドで使用できます。
type - カレンダ・タイプCalendar.BuilderNullPointerException - typeがnullである場合IllegalArgumentException - typeが不明の場合IllegalStateException - 別のカレンダ・タイプがすでに設定されている場合Calendar.getCalendarType(), Calendar.getAvailableCalendarTypes()public Calendar.Builder setLocale(Locale locale)
localeに設定します。 このCalendar.Builderにロケールが指定されていない場合は、Locale.Category.FORMATのデフォルトのLocaleが使用されます。
setCalendarTypeメソッドの呼出しによってカレンダ・タイプが明示的に指定されない場合は、Localeの値を使って、作成されるCalendarのタイプが決められます。
setWeekDefinitionメソッドの呼出しによって週定義パラメータが明示的に指定されない場合は、Localeのデフォルト値が使用されます。
locale - LocaleCalendar.BuilderNullPointerException - localeがnullである場合Calendar.getInstance(Locale)public Calendar.Builder setWeekDefinition(int firstDayOfWeek, int minimalDaysInFirstWeek)
firstDayOfWeekとminimalDaysInFirstWeekで指定された値に設定します。 このメソッドで指定されるパラメータは、localeで指定されるデフォルト値よりも優先されます。 firstDayOfWeek - 週の最初の曜日。Calendar.SUNDAYからCalendar.SATURDAYのいずれかminimalDaysInFirstWeek - 最初の週の最小日数(1..7)Calendar.BuilderIllegalArgumentException - firstDayOfWeekまたはminimalDaysInFirstWeekが無効な場合Calendar.getFirstDayOfWeek(), Calendar.getMinimalDaysInFirstWeek()public Calendar build()
Calendarを返します。 setCalendarTypeメソッドまたはlocaleによって指定されたカレンダ・タイプを使って、作成されるCalendarが決められます。 明示的なカレンダ・タイプが指定されない場合は、そのロケールのデフォルト・カレンダが作成されます。
カレンダ・タイプが「iso8601」である場合は、先発グレゴリオ暦になるように、GregorianCalendarのグレゴリオ暦切換え日がDate(Long.MIN_VALUE)に設定されます。 その週定義パラメータも、ISO 8601標準に準拠するように設定されます。 "iso8601"で作成されたGregorianCalendarのgetCalendarTypeメソッドが"gregory"を返すことに注意してください。
ロケールおよびタイムゾーンのパラメータが明示的に指定されなかった場合は、デフォルト値が使用されます。
範囲外のフィールド値があれば、非厳密モードで正規化されるか、厳密モードで無効な値として検出されます。
Calendar.Builderのパラメータを使って作成されたCalendarIllegalArgumentException - カレンダ・タイプが不明の場合、無効なフィールド値が厳密モードで指定されている場合、または暦週日付をサポートしていないカレンダ・タイプに対して暦週日付が指定されている場合。Calendar.getInstance(TimeZone, Locale), Locale.getDefault(Locale.Category), TimeZone.getDefault() バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。