public enum ChronoField extends Enum<ChronoField> implements TemporalField
このフィールド・セットは、日付、時間、または日付/時間を操作するためのフィールド・ベースのアクセスを提供します。標準のフィールド・セットは、TemporalField
を実装することによって拡張できます。
これらのフィールドは、複数の暦体系に適用できると想定されています。たとえば、ISO以外の暦体系の多くは、ルールは多少異なっても、日付を年、月、および日で定義しています。各フィールドのドキュメントには、そのフィールドの動作が説明されています。
列挙型定数と説明 |
---|
ALIGNED_DAY_OF_WEEK_IN_MONTH
月のうちの位置合せされた曜日。
|
ALIGNED_DAY_OF_WEEK_IN_YEAR
年のうちの位置合せされた曜日。
|
ALIGNED_WEEK_OF_MONTH
月のうちの位置合せされた週番号。
|
ALIGNED_WEEK_OF_YEAR
年のうちの位置合せされた週番号。
|
AMPM_OF_DAY
1日の午前または午後。
|
CLOCK_HOUR_OF_AMPM
午前または午後のクロック時間。
|
CLOCK_HOUR_OF_DAY
1日のうちのクロック時間。
|
DAY_OF_MONTH
月の日。
|
DAY_OF_WEEK
火曜日などの曜日。
|
DAY_OF_YEAR
年の日。
|
EPOCH_DAY
Javaエポック1970-01-01 (ISO)を基準とするエポック日。
|
ERA
紀元。
|
HOUR_OF_AMPM
午前または午後の時。
|
HOUR_OF_DAY
時。
|
INSTANT_SECONDS
インスタントのエポック秒。
|
MICRO_OF_DAY
1日のうちのマイクロ秒。
|
MICRO_OF_SECOND
1秒のうちのマイクロ秒。
|
MILLI_OF_DAY
1日のうちのミリ秒。
|
MILLI_OF_SECOND
1秒のうちのミリ秒。
|
MINUTE_OF_DAY
1日のうちの分。
|
MINUTE_OF_HOUR
分。
|
MONTH_OF_YEAR
3月などの月。
|
NANO_OF_DAY
1日のうちのナノ秒。
|
NANO_OF_SECOND
1秒のうちのナノ秒。
|
OFFSET_SECONDS
UTC/グリニッジからのオフセット。
|
PROLEPTIC_MONTH
先発グレゴリオ暦の月(年0から順に月をカウント)。
|
SECOND_OF_DAY
1日のうちの秒。
|
SECOND_OF_MINUTE
秒。
|
YEAR
2012などの先発グレゴリオ暦の年。
|
YEAR_OF_ERA
紀元のうちの年。
|
修飾子と型 | メソッドと説明 |
---|---|
<R extends Temporal> |
adjustInto(R temporal, long newValue)
このフィールドの値が設定された、指定された時間的オブジェクトのコピーを返します。
|
int |
checkValidIntValue(long value)
指定された値が有効で、
int に収まることを確認します。 |
long |
checkValidValue(long value)
指定された値がこのフィールドに対して有効であることを確認します。
|
TemporalUnit |
getBaseUnit()
フィールドの測定単位を取得します。
|
String |
getDisplayName(Locale locale)
要求されたロケールでのフィールドの表示名を取得します。
|
long |
getFrom(TemporalAccessor temporal)
指定された時間的オブジェクトからこのフィールドの値を取得します。
|
TemporalUnit |
getRangeUnit()
フィールドの範囲を取得します。
|
boolean |
isDateBased()
このフィールドが日付のコンポーネントを表しているかどうかを確認します。
|
boolean |
isSupportedBy(TemporalAccessor temporal)
このフィールドが時間的オブジェクトでサポートされているかどうかを確認します。
|
boolean |
isTimeBased()
このフィールドが時間のコンポーネントを表しているかどうかを確認します。
|
ValueRange |
range()
フィールドの有効値の範囲を取得します。
|
ValueRange |
rangeRefinedBy(TemporalAccessor temporal)
時間的オブジェクトを使用して結果を絞り込むことにより、このフィールドの有効値の範囲を取得します。
|
String |
toString()
宣言に含まれるとおりのenum定数の名前を返します。
|
static ChronoField |
valueOf(String name)
指定された名前を持つ、この型の列挙型定数を返します。
|
static ChronoField[] |
values()
この列挙型の定数を含む配列を、宣言されている順序で返します。
|
clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, valueOf
resolve
public static final ChronoField NANO_OF_SECOND
これは1秒のうちのナノ秒を0から999,999,999の範囲でカウントします。このフィールドはすべての暦体系で同じ意味を持ちます。
このフィールドは「1秒のうちのナノ秒」を表すために使用され、秒の小数部を扱います。TemporalAccessor
の実装では、SECOND_OF_MINUTE
、SECOND_OF_DAY
、またはINSTANT_SECONDS
の値を返すことができる場合、このフィールドに値を与えるようにしてください。不明な精度にはゼロを挿入します。
このフィールドを使用して値を設定するときは、オブジェクトが格納する精度と同じ精度で設定してください。余分な精度は整数除算を使用して削除します。たとえば、TemporalAccessor
が時間をミリ秒の精度で格納する場合は、「1秒のうちのナノ秒」を1,000,000で割ってから、「1秒のうちのミリ秒」を置き換える必要があります。
このフィールドは解析時には次のように動作します。厳密およびスマート・モードでは値が検証されますが、非厳密モードでは検証されません。フィールドがMILLI_OF_SECOND
およびMICRO_OF_SECOND
との組合せで解決されます。
public static final ChronoField NANO_OF_DAY
これは1日のうちのナノ秒を0から(24 * 60 * 60 * 1,000,000,000) - 1の範囲でカウントします。このフィールドはすべての暦体系で同じ意味を持ちます。
このフィールドは「1日のうちのナノ秒」を表すために使用され、秒の小数部を扱います。TemporalAccessor
の実装では、SECOND_OF_DAY
の値を返すことができる場合、このフィールドに値を与えるようにしてください。不明な精度にはゼロを挿入します。
このフィールドは解析時には次のように動作します。厳密およびスマート・モードでは値が検証されますが、非厳密モードでは検証されません。値がNANO_OF_SECOND
、SECOND_OF_MINUTE
、MINUTE_OF_HOUR
、およびHOUR_OF_DAY
フィールドに分割されます。
public static final ChronoField MICRO_OF_SECOND
これは1秒のうちのマイクロ秒を0から999,999の範囲でカウントします。このフィールドはすべての暦体系で同じ意味を持ちます。
このフィールドは「1秒のうちのマイクロ秒」を表すために使用され、秒の小数部を扱います。TemporalAccessor
の実装では、SECOND_OF_MINUTE
、SECOND_OF_DAY
、またはINSTANT_SECONDS
の値を返すことができる場合、このフィールドに値を与えるようにしてください。不明な精度にはゼロを挿入します。
このフィールドを使用して値を設定するときは、1,000を掛けた値でNANO_OF_SECOND
を設定する場合と同じ方法で設定してください。
このフィールドは解析時には次のように動作します。厳密およびスマート・モードでは値が検証されますが、非厳密モードでは検証されません。フィールドがMILLI_OF_SECOND
との組合せで解決されて、NANO_OF_SECOND
が生成されます。
public static final ChronoField MICRO_OF_DAY
これは1日のうちのマイクロ秒を0から(24 * 60 * 60 * 1,000,000) - 1の範囲でカウントします。このフィールドはすべての暦体系で同じ意味を持ちます。
このフィールドは「1日のうちのマイクロ秒」を表すために使用され、秒の小数部を扱います。TemporalAccessor
の実装では、SECOND_OF_DAY
の値を返すことができる場合、このフィールドに値を与えるようにしてください。不明な精度にはゼロを挿入します。
このフィールドを使用して値を設定するときは、1,000を掛けた値でNANO_OF_DAY
を設定する場合と同じ方法で設定してください。
このフィールドは解析時には次のように動作します。厳密およびスマート・モードでは値が検証されますが、非厳密モードでは検証されません。値がMICRO_OF_SECOND
、SECOND_OF_MINUTE
、MINUTE_OF_HOUR
、およびHOUR_OF_DAY
フィールドに分割されます。
public static final ChronoField MILLI_OF_SECOND
これは1秒のうちのミリ秒を0から999の範囲でカウントします。このフィールドはすべての暦体系で同じ意味を持ちます。
このフィールドは「1秒のうちのミリ秒」を表すために使用され、秒の小数部を扱います。TemporalAccessor
の実装では、SECOND_OF_MINUTE
、SECOND_OF_DAY
、またはINSTANT_SECONDS
の値を返すことができる場合、このフィールドに値を与えるようにしてください。不明な精度にはゼロを挿入します。
このフィールドを使用して値を設定するときは、1,000,000を掛けた値でNANO_OF_SECOND
を設定する場合と同じ方法で設定してください。
このフィールドは解析時には次のように動作します。厳密およびスマート・モードでは値が検証されますが、非厳密モードでは検証されません。フィールドがMICRO_OF_SECOND
との組合せで解決されて、NANO_OF_SECOND
が生成されます。
public static final ChronoField MILLI_OF_DAY
これは1日のうちのミリ秒を0から(24 * 60 * 60 * 1,000) - 1の範囲でカウントします。このフィールドはすべての暦体系で同じ意味を持ちます。
このフィールドは「1日のうちのミリ秒」を表すために使用され、秒の小数部を扱います。TemporalAccessor
の実装では、SECOND_OF_DAY
の値を返すことができる場合、このフィールドに値を与えるようにしてください。不明な精度にはゼロを挿入します。
このフィールドを使用して値を設定するときは、1,000,000を掛けた値でNANO_OF_DAY
を設定する場合と同じ方法で設定してください。
このフィールドは解析時には次のように動作します。厳密およびスマート・モードでは値が検証されますが、非厳密モードでは検証されません。値がMILLI_OF_SECOND
、SECOND_OF_MINUTE
、MINUTE_OF_HOUR
、およびHOUR_OF_DAY
フィールドに分割されます。
public static final ChronoField SECOND_OF_MINUTE
これは1分のうちの秒を0から59の範囲でカウントします。このフィールドはすべての暦体系で同じ意味を持ちます。
このフィールドは解析時には次のように動作します。厳密およびスマート・モードでは値が検証されますが、非厳密モードでは検証されません。
public static final ChronoField SECOND_OF_DAY
これは1日のうちの秒を0から(24 * 60 * 60) - 1の範囲でカウントします。このフィールドはすべての暦体系で同じ意味を持ちます。
このフィールドは解析時には次のように動作します。厳密およびスマート・モードでは値が検証されますが、非厳密モードでは検証されません。値がSECOND_OF_MINUTE
、MINUTE_OF_HOUR
、およびHOUR_OF_DAY
フィールドに分割されます。
public static final ChronoField MINUTE_OF_HOUR
これは1時間のうちの分を0から59の範囲でカウントします。このフィールドはすべての暦体系で同じ意味を持ちます。
このフィールドは解析時には次のように動作します。厳密およびスマート・モードでは値が検証されますが、非厳密モードでは検証されません。
public static final ChronoField MINUTE_OF_DAY
これは1日のうちの分を0から(24 * 60) - 1の範囲でカウントします。このフィールドはすべての暦体系で同じ意味を持ちます。
このフィールドは解析時には次のように動作します。厳密およびスマート・モードでは値が検証されますが、非厳密モードでは検証されません。値がMINUTE_OF_HOUR
およびHOUR_OF_DAY
フィールドに分割されます。
public static final ChronoField HOUR_OF_AMPM
これは午前/午後の時を0から11の範囲でカウントします。これは標準の12時間デジタル時計に表示される時です。このフィールドはすべての暦体系で同じ意味を持ちます。
このフィールドは解析時には次のように動作します。厳密およびスマート・モードでは、0から11の範囲で値が検証されます。非厳密モードでは値は検証されません。これはAMPM_OF_DAY
と組み合わされ、{AMPM_OF_DAY}の値に12を掛けることによってHOUR_OF_DAY
が生成されます。
public static final ChronoField CLOCK_HOUR_OF_AMPM
これは午前/午後の時を1から12の範囲でカウントします。これは標準の12時間アナログ時計に表示される時です。このフィールドはすべての暦体系で同じ意味を持ちます。
このフィールドは解析時には次のように動作します。厳密モードでは1から12、スマート・モードでは0から12の範囲で、値が検証されます。非厳密モードでは値は検証されません。このフィールドは、値が12でない場合は同じ値のHOUR_OF_AMPM
に変換され、値が12の場合は0に変換されます。
public static final ChronoField HOUR_OF_DAY
これは1日のうちの時を0から23の範囲でカウントします。これは標準の24時間デジタル時計に表示される時です。このフィールドはすべての暦体系で同じ意味を持ちます。
このフィールドは解析時には次のように動作します。厳密およびスマート・モードでは値が検証されますが、非厳密モードでは検証されません。フィールドがMINUTE_OF_HOUR
、SECOND_OF_MINUTE
、およびNANO_OF_SECOND
と組み合わされて、LocalTime
が生成されます。非厳密モードでは、超過日数は解析された日付に加算されるか、DateTimeFormatter.parsedExcessDays()
を介して使用可能になります。
public static final ChronoField CLOCK_HOUR_OF_DAY
これは午前/午後の時を1から24の範囲でカウントします。これは24時間アナログ時計に表示される時です。このフィールドはすべての暦体系で同じ意味を持ちます。
このフィールドは解析時には次のように動作します。厳密モードでは1から24、スマート・モードでは0から24の範囲で、値が検証されます。非厳密モードでは値は検証されません。このフィールドは、値が24でない場合は同じ値のHOUR_OF_DAY
に変換され、値が24の場合は0に変換されます。
public static final ChronoField AMPM_OF_DAY
これは1日のうちの午前/午後を0 (午前)から1 (午後)の範囲でカウントします。このフィールドはすべての暦体系で同じ意味を持ちます。
このフィールドは解析時には次のように動作します。厳密およびスマート・モードでは、0から1の範囲で値が検証されます。非厳密モードでは値は検証されません。これはHOUR_OF_AMPM
と組み合わされ、{AMPM_OF_DAY}の値に12を掛けることによってHOUR_OF_DAY
が生成されます。
public static final ChronoField DAY_OF_WEEK
これは曜日の標準的な概念を表します。デフォルトのISO暦体系では、月曜(1)から日曜(7)までの値を取ります。DayOfWeek
クラスを使用して結果を解釈できます。
ISO以外の暦体系の多くでも、ISOと同様に7日からなる週が定義されています。このような暦体系では、DayOfWeek
を使用できるように、月曜(1)から日曜(7)までの同じ番号付けを使用する必要もあります。
7日からなる標準的な週を使用しない暦体系では、週に似た期間に名前または番号の付けられた日が含まれる類似の概念がある場合に、このフィールドを実装するようにしてください。番号付けは1から始めることをお薦めします。
public static final ChronoField ALIGNED_DAY_OF_WEEK_IN_MONTH
これは、週が月の開始に位置合せされる場合の、ある週の期間に含まれる日のカウントの概念を表します。通常、このフィールドはALIGNED_WEEK_OF_MONTH
とともに使用されます。
たとえば、7日からなる週を使用する暦体系では、最初の「位置合せされた月の週番号」は「月の日」1から始まり、2番目の「位置合せされた月の週番号」は「月の日」8から始まる、というようになります。これらの位置合せされた各週に含まれる日に1から7までの番号が付けられ、このフィールドの値として返されます。したがって、「月の日」1から7では、「位置合せされた曜日」の値は1から7になります。また、「月の日」8から14でもこれが繰り返され、「位置合せされた曜日」の値は1から7になります。
7日からなる週を使用しない暦体系では、週の長さは異なるものを使用しますが、通常は同じ方法でこのフィールドを実装するようにしてください。
public static final ChronoField ALIGNED_DAY_OF_WEEK_IN_YEAR
これは、週が年の開始に位置合せされる場合の、ある週の期間に含まれる日のカウントの概念を表します。通常、このフィールドはALIGNED_WEEK_OF_YEAR
とともに使用されます。
たとえば、7日からなる週を使用する暦体系では、最初の「位置合せされた年の週番号」は「年の日」1から始まり、2番目の「位置合せされた年の週番号」は「年の日」8から始まる、というようになります。これらの位置合せされた各週に含まれる日に1から7までの番号が付けられ、このフィールドの値として返されます。したがって、「年の日」1から7では、「位置合せされた曜日」の値は1から7になります。また、「年の日」8から14でもこれが繰り返され、「位置合せされた曜日」の値は1から7になります。
7日からなる週を使用しない暦体系では、週の長さは異なるものを使用しますが、通常は同じ方法でこのフィールドを実装するようにしてください。
public static final ChronoField DAY_OF_MONTH
これは月のうちの日の概念を表します。デフォルトのISO暦体系では、ほとんどの月で1から31までの値を取ります。4月、6月、9月、11月には1から30までの日があり、2月には1から28 (うるう年では29)までの日があります。
ISO以外の暦体系では、その暦体系のユーザーにもっとも認められている「月の日」の値を使用して、このフィールドを実装するようにしてください。これは通常、日を1からその月の長さまでカウントします。
public static final ChronoField DAY_OF_YEAR
これは年のうちの日の概念を表します。デフォルトのISO暦体系では、標準の年で1から365まで、うるう年では1から366までの値を取ります。
ISO以外の暦体系では、その暦体系のユーザーにもっとも認められている「年の日」の値を使用して、このフィールドを実装するようにしてください。これは通常、日を1からその年の長さまでカウントします。
ISO以外の暦体系では、月の番号が自然にリセットされる点とは異なる点で年の番号が変わる方式が使用されている場合があります。たとえば、和暦体系では紀元の変更が任意の日付で発生する可能性があり、それによって年の番号が1にリセットされます。紀元と年がリセットされると、「年の日」も1にリセットされますが、月や「月の日」はリセットされません。
public static final ChronoField EPOCH_DAY
このフィールドは、1970-01-01 (ISO)をゼロとして、日を順にカウントします。これにはローカル時系列が使用され、オフセットとタイムゾーンは無視されることに注意してください。
このフィールドは、すべての暦体系で同じ意味を持つように厳密に定義されます。これは暦間での相互運用を保証するために必要です。
public static final ChronoField ALIGNED_WEEK_OF_MONTH
これは、週が月の開始に位置合せされる場合の、ある月の期間に含まれる週のカウントの概念を表します。通常、このフィールドはALIGNED_DAY_OF_WEEK_IN_MONTH
とともに使用されます。
たとえば、7日からなる週を使用する暦体系では、最初の「位置合せされた月の週番号」は「月の日」1から始まり、2番目の「位置合せされた月の週番号」は「月の日」8から始まる、というようになります。したがって、「月の日」の値1から7までは「位置合せされた月の週番号」1に含まれ、「月の日」の値8から14までは「位置合せされた月の週番号」2に含まれる、というようになります。
7日からなる週を使用しない暦体系では、週の長さは異なるものを使用しますが、通常は同じ方法でこのフィールドを実装するようにしてください。
public static final ChronoField ALIGNED_WEEK_OF_YEAR
これは、週が年の開始に位置合せされる場合の、ある年の期間に含まれる週のカウントの概念を表します。通常、このフィールドはALIGNED_DAY_OF_WEEK_IN_YEAR
とともに使用されます。
たとえば、7日からなる週を使用する暦体系では、最初の「位置合せされた年の週番号」は「年の日」1から始まり、2番目の「位置合せされた年の週番号」は「年の日」8から始まる、というようになります。したがって、「年の日」の値1から7までは「位置合せされた年の週番号」1に含まれ、「年の日」の値8から14までは「位置合せされた年の週番号」2に含まれる、というようになります。
7日からなる週を使用しない暦体系では、週の長さは異なるものを使用しますが、通常は同じ方法でこのフィールドを実装するようにしてください。
public static final ChronoField MONTH_OF_YEAR
これは年のうちの月の概念を表します。デフォルトのISO暦体系では、1月(1)から12月(12)までの値を取ります。
ISO以外の暦体系では、その暦体系のユーザーにもっとも認められている月の値を使用して、このフィールドを実装するようにしてください。これは通常、月を1からカウントします。
public static final ChronoField PROLEPTIC_MONTH
このフィールドは、先発グレゴリオ暦0年の最初の月が値ゼロを持つものとして、月を順にカウントします。後になるほど月の値は順に大きくなります。前になるほど月の値は順に小さくなります。月の並びにギャップや中断はありません。これにはローカル時系列が使用され、オフセットとタイムゾーンは無視されることに注意してください。
デフォルトのISO暦体系では、2012年6月の値は(2012 * 12 + 6 - 1)
になります。このフィールドは主に内部使用向けです。
ISO以外の暦体系では、上記の定義に従ってこのフィールドを実装する必要があります。これは、先発グレゴリオ暦0年の開始から経過した月を単純にゼロからカウントします。先発グレゴリオ暦の年が完全に定義されているすべての暦体系には、0年が存在します。0年を含まない最小の年が暦体系に存在する場合、このメソッドを定義するには0年を推定する必要があります。
public static final ChronoField YEAR_OF_ERA
これは紀元のうちの年の概念を表します。通常、このフィールドはERA
とともに使用されます。
日付を表す標準のメンタル・モデルは、年、月および日という3つの概念に基づいています。これらは、YEAR
、MONTH_OF_YEAR
およびDAY_OF_MONTH
フィールドにマップされます。紀元には言及されていないことに注意してください。日付を表す完全なモデルには、紀元、年、月および日という4つの概念が必要です。これらは、ERA
、YEAR_OF_ERA
、MONTH_OF_YEAR
およびDAY_OF_MONTH
フィールドにマップされます。このフィールドとYEAR
のどちらが使用されるかは、使用されているメンタル・モデルによって決まります。このトピックの詳細については、ChronoLocalDate
を参照してください。
デフォルトのISO暦体系では、「BCE」と「CE」という2つの紀元が定義されています。紀元「CE」は現在使用されているもので、紀元年は1から最大値まで進みます。紀元「BCE」は1つ前の紀元で、紀元年は後ろへ進みます。
たとえば、毎回1年を減算すると次のようになります。
- 先発グレゴリオ暦の年2 = 「CE」紀元年2
- 先発グレゴリオ暦の年1 = 「CE」紀元年1
- 先発グレゴリオ暦の年0 = 「BCE」紀元年1
- 先発グレゴリオ暦の年-1 = 「BCE」紀元年2
実際には、ISO-8601標準で紀元は定義されていません。また、ユリウス暦とグレゴリオ暦の間の切換えのため、ISOの紀元はよく知られているAD/BC紀元に揃っていません。
ISO以外の暦体系では、その暦体系のユーザーにもっとも認められている紀元年の値を使用して、このフィールドを実装するようにしてください。ほとんどの暦体系には紀元が2つだけ存在するため、紀元年の番号付けはISO暦体系で使用されるものと通常は同じです。紀元年の値は、通常は常に正であるべきですが、これは必須ではありません。
public static final ChronoField YEAR
これは、負の数を使用して順にカウントした年の概念を表します。先発グレゴリオ暦の年は、紀元を基に解釈されることはありません。先発グレゴリオ暦の年から紀元年へのマッピングを示す例については、YEAR_OF_ERA
を参照してください。
日付を表す標準のメンタル・モデルは、年、月および日という3つの概念に基づいています。これらは、YEAR
、MONTH_OF_YEAR
およびDAY_OF_MONTH
フィールドにマップされます。紀元には言及されていないことに注意してください。日付を表す完全なモデルには、紀元、年、月および日という4つの概念が必要です。これらは、ERA
、YEAR_OF_ERA
、MONTH_OF_YEAR
およびDAY_OF_MONTH
フィールドにマップされます。このフィールドとYEAR_OF_ERA
のどちらが使用されるかは、使用されているメンタル・モデルによって決まります。このトピックの詳細については、ChronoLocalDate
を参照してください。
ISO以外の暦体系では、このフィールドを次のように実装するようにしてください。暦体系に紀元が2つだけ存在する場合(固定の日付の前と後)、「先発グレゴリオ暦の年」の値は、後の紀元では紀元年の値と同じになり、前の紀元では順に増加する負の値になります。暦体系に3つ以上の紀元が存在する場合、「先発グレゴリオ暦の年」の値は適切な任意の値で定義できます。ただし、ISOと同じになるように定義することが最善のオプションでしょう。
public static final ChronoField ERA
これは、時系列の最大の区分である紀元の概念を表します。通常、このフィールドはYEAR_OF_ERA
とともに使用されます。
デフォルトのISO暦体系では、「BCE」と「CE」という2つの紀元が定義されています。紀元「CE」は現在使用されているもので、紀元年は1から最大値まで進みます。紀元「BCE」は1つ前の紀元で、紀元年は後ろへ進みます。詳細な例については、YEAR_OF_ERA
を参照してください。
ISO以外の暦体系では、紀元を定義するためにこのフィールドを実装するようにしてください。1970-01-01 (ISO)の時点でアクティブであった紀元に値1を割り当てる必要があります。前になるほど紀元の値は順に小さくなる必要があります。後になるほど紀元の値は順に大きくなる必要があります。
public static final ChronoField INSTANT_SECONDS
これは、1970-01-01T00:00Z (ISO)をゼロとして順にカウントした秒の概念を表します。このフィールドをNANO_OF_SECOND
とともに使用して、秒の小数部を表すことができます。
Instant
は、時系列上の一瞬の点を表します。インスタントは、単独でローカル日付/時間の取得を可能にするだけの十分な情報を持っていません。オフセットまたはタイムゾーンと組み合せた場合のみ、ローカルの日付または時間を計算できます。
このフィールドは、すべての暦体系で同じ意味を持つように厳密に定義されます。これは暦間での相互運用を保証するために必要です。
public static final ChronoField OFFSET_SECONDS
これは、UTC/グリニッジからのローカル時間のオフセット(秒数)の概念を表します。
ZoneOffset
は、ローカル時間とUTC/グリニッジの時間差を表します。これは通常、時と分からなる固定の数値です。オフセットの合計
の秒数と等価です。たとえば、冬の間、パリのオフセットは+01:00
で、これは3600秒です。
このフィールドは、すべての暦体系で同じ意味を持つように厳密に定義されます。これは暦間での相互運用を保証するために必要です。
public static ChronoField[] values()
for (ChronoField c : ChronoField.values()) System.out.println(c);
public static ChronoField valueOf(String name)
name
- 返される列挙型定数の名前。IllegalArgumentException
- 指定された名前を持つ定数をこの列挙型が持っていない場合NullPointerException
- 引数がnullの場合public String getDisplayName(Locale locale)
TemporalField
ロケール用の表示名がない場合は、適切なデフォルトを返す必要があります。
デフォルトの実装では、ロケールがnullでないことを確認し、toString()
を返す必要があります。
TemporalField
のgetDisplayName
locale
- 使用するロケール。null以外public TemporalUnit getBaseUnit()
TemporalField
フィールドの単位は、範囲内で変化する期間です。たとえば、フィールド「MonthOfYear」の単位は「Months」です。TemporalField.getRangeUnit()
も参照してください。
TemporalField
のgetBaseUnit
public TemporalUnit getRangeUnit()
TemporalField
フィールドの範囲は、フィールドがその範囲内で変化する期間です。たとえば、フィールド「MonthOfYear」の範囲は「Years」です。TemporalField.getBaseUnit()
も参照してください。
範囲がnullになることはありません。たとえば、「Year」フィールドは「YearOfForever」の短縮形です。したがって、その単位は「Years」で、範囲は「Forever」です。
TemporalField
のgetRangeUnit
public ValueRange range()
すべてのフィールドはlong
整数で表現できます。このメソッドは、その値の有効範囲を記述するオブジェクトを返します。
このメソッドは、ISO-8601暦体系のフィールドの範囲を返します。この範囲は他の暦体系では正しくない可能性があります。別の暦体系の正しい範囲にアクセスするには、Chronology.range(ChronoField)
を使用してください。
結果は有効な最小値と最大値を記述しているだけなので、それらを深く解釈しすぎないことが重要です。たとえば、範囲内の値であっても、フィールドに対して無効な場合があります。
TemporalField
のrange
public boolean isDateBased()
曜日から紀元までのフィールドは日付ベースです。
TemporalField
のisDateBased
public boolean isTimeBased()
「1秒のうちのナノ秒」から「1日の午前または午後」までのフィールドは時間ベースです。
TemporalField
のisTimeBased
public long checkValidValue(long value)
これは、range()
によって返された有効値の外側の範囲に値が入っていることを検証します。
このメソッドは、ISO-8601暦体系のフィールドの範囲に照らしてチェックします。この範囲は他の暦体系では正しくない可能性があります。別の暦体系の正しい範囲にアクセスするには、Chronology.range(ChronoField)
を使用してください。
value
- チェックする値public int checkValidIntValue(long value)
int
に収まることを確認します。
これは、range()
によって返された有効値の外側の範囲に値が入っていることを検証します。すべての有効値がint
の境界に収まることも確認します。
このメソッドは、ISO-8601暦体系のフィールドの範囲に照らしてチェックします。この範囲は他の暦体系では正しくない可能性があります。別の暦体系の正しい範囲にアクセスするには、Chronology.range(ChronoField)
を使用してください。
value
- チェックする値public boolean isSupportedBy(TemporalAccessor temporal)
TemporalField
これは、時間的オブジェクトのアクセサがこのフィールドをサポートしているかどうかを判定します。これがfalseを返す場合、このフィールドについて時間的オブジェクトに問い合せることはできません。
このメソッドを使用する等価な方法が2つあります。1つ目はこのメソッドを直接呼び出すことです。2つ目はTemporalAccessor.isSupported(TemporalField)
を使用することです。
// these two lines are equivalent, but the second approach is recommended temporal = thisField.isSupportedBy(temporal); temporal = temporal.isSupported(thisField);2つ目の方法
isSupported(TemporalField)
の方がコードを読むときにわかりやすいため、これを使用することをお薦めします。
実装では、サポートされているかどうかを判定するために、ChronoField
で使用可能なフィールドを使用するようにしてください。
TemporalField
のisSupportedBy
temporal
- 問い合せる時間的オブジェクト。null以外public ValueRange rangeRefinedBy(TemporalAccessor temporal)
TemporalField
これは時間的オブジェクトを使用してフィールドの有効値の範囲を見つけます。これはTemporalField.range()
に似ていますが、このメソッドは時間的オブジェクトを使用して結果を絞り込みます。たとえば、フィールドがDAY_OF_MONTH
の場合、月の長さには28、29、30および31日の4つの可能性があるため、range
メソッドは正確ではありません。このメソッドを日付に使用すると、範囲は正確になり、これら4つのオプションのうち1つだけが返されます。
このメソッドを使用する等価な方法が2つあります。1つ目はこのメソッドを直接呼び出すことです。2つ目はTemporalAccessor.range(TemporalField)
を使用することです。
// these two lines are equivalent, but the second approach is recommended temporal = thisField.rangeRefinedBy(temporal); temporal = temporal.range(thisField);2つ目の方法
range(TemporalField)
の方がコードを読むときにわかりやすいため、これを使用することをお薦めします。
実装では、問合せや計算を実行する場合、ChronoField
で使用可能なフィールドを使用するようにしてください。フィールドがサポートされていない場合は、UnsupportedTemporalTypeException
をスローする必要があります。
TemporalField
のrangeRefinedBy
temporal
- 結果を絞り込むために使用される時間的オブジェクト。null以外public long getFrom(TemporalAccessor temporal)
TemporalField
これは、このフィールドの値について時間的オブジェクトに問い合せます。
このメソッドを使用する等価な方法が2つあります。1つ目はこのメソッドを直接呼び出すことです。2つ目はTemporalAccessor.getLong(TemporalField)
(またはTemporalAccessor.get(TemporalField)
)を使用することです。
// these two lines are equivalent, but the second approach is recommended temporal = thisField.getFrom(temporal); temporal = temporal.getLong(thisField);2つ目の方法
getLong(TemporalField)
の方がコードを読むときにわかりやすいため、これを使用することをお薦めします。
実装では、問合せや計算を実行する場合、ChronoField
で使用可能なフィールドを使用するようにしてください。フィールドがサポートされていない場合は、UnsupportedTemporalTypeException
をスローする必要があります。
TemporalField
のgetFrom
temporal
- 問い合せる時間的オブジェクト。null以外public <R extends Temporal> R adjustInto(R temporal, long newValue)
TemporalField
これは、指定された時間的オブジェクトに基づく、このフィールドの値が変更された新しい時間的オブジェクトを返します。たとえば、LocalDate
で、これは年、月、または「月の日」を設定するために使用できます。返されるオブジェクトは、指定されたオブジェクトと同じ識別可能な型を持ちます。
フィールドの変更が完全には定義されていない場合もあります。たとえば、ターゲット・オブジェクトが1月31日を表す日付である場合、月を2月に変更することは不明な場合があります。このようなケースでは、実装が結果の解決を担当します。通常は1つ前の有効な日付が選択され、この例の場合は2月の最後の有効な日になります。
このメソッドを使用する等価な方法が2つあります。1つ目はこのメソッドを直接呼び出すことです。2つ目はTemporal.with(TemporalField, long)
を使用することです。
// these two lines are equivalent, but the second approach is recommended temporal = thisField.adjustInto(temporal); temporal = temporal.with(thisField);2つ目の方法
with(TemporalField)
の方がコードを読むときにわかりやすいため、これを使用することをお薦めします。
実装では、問合せや計算を実行する場合、ChronoField
で使用可能なフィールドを使用するようにしてください。フィールドがサポートされていない場合は、UnsupportedTemporalTypeException
をスローする必要があります。
実装では、指定された時間的オブジェクトを変更してはいけません。かわりに、元のオブジェクトの調整済のコピーを返す必要があります。これは、不変および可変の実装に安全で等価な動作を提供します。
TemporalField
のadjustInto
R
- Temporalオブジェクトの型temporal
- 調整する時間的オブジェクト。null以外newValue
- フィールドの新しい値public String toString()
Enum
TemporalField
のtoString
Enum<ChronoField>
のtoString
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.