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)
|
public Calendar.Builder setInstant(long instant)
instant
値(Epochからのミリ秒単位のオフセット)に設定します。instant
- エポックからのミリ秒単位のオフセットCalendar.Builder
IllegalStateException
- フィールド・パラメータのいずれかがすでに設定されている場合Calendar.setTime(Date)
, Calendar.setTimeInMillis(long)
, Calendar.time
public Calendar.Builder setInstant(Date instant)
instant
- エポックからのミリ秒単位のオフセットを表すDate
Calendar.Builder
NullPointerException
- instant
がnull
である場合IllegalStateException
- フィールド・パラメータのいずれかがすでに設定されている場合Calendar.setTime(Date)
, Calendar.setTimeInMillis(long)
, Calendar.time
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)
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.Builder
NullPointerException
- 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.Builder
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
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
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()
public Calendar.Builder setTimeZone(TimeZone zone)
zone
に設定します。このCaledar.Builder
にタイムゾーン・パラメータが指定されていない場合は、デフォルトのTimeZone
がbuild
メソッドで使用されます。zone
- TimeZone
Calendar.Builder
NullPointerException
- zone
がnull
である場合Calendar.setTimeZone(TimeZone)
public Calendar.Builder setLenient(boolean lenient)
lenient
- 非厳密モードの場合はtrue
。厳密モードの場合はfalse
Calendar.Builder
Calendar.setLenient(boolean)
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()
public Calendar.Builder setLocale(Locale locale)
locale
に設定します。このCalendar.Builder
にロケールが指定されていない場合は、Locale.Category.FORMAT
のデフォルトのLocale
が使用されます。
setCalendarType
メソッドの呼出しによってカレンダ・タイプが明示的に指定されない場合は、Locale
の値を使って、作成されるCalendar
のタイプが決められます。
setWeekDefinition
メソッドの呼出しによって週定義パラメータが明示的に指定されない場合は、Locale
のデフォルト値が使用されます。
locale
- Locale
Calendar.Builder
NullPointerException
- 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.Builder
IllegalArgumentException
- 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
のパラメータを使って作成されたCalendar
IllegalArgumentException
- カレンダ・タイプが不明の場合、無効なフィールド値が厳密モードで指定されている場合、または暦週日付をサポートしていないカレンダ・タイプに対して暦週日付が指定されている場合。Calendar.getInstance(TimeZone, Locale)
, Locale.getDefault(Locale.Category)
, TimeZone.getDefault()
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.