- すべての実装されたインタフェース:
Serializable
- 直系の既知のサブクラス:
ZoneOffset
ヨーロッパ/パリ
など)。
ZoneId
は、Instant
およびLocalDateTime
の間の変換に使用するルールを識別するために使用されます。 タイプの異なる2つのIDがあります。
- 固定オフセット - UTC/グリニッジからの完全に解決されたオフセット、すべてのローカル日付/時間に同じオフセットを使用
- 地理的地域 - UTC/グリニッジからのオフセットを見つけるために特定のルール・セットが適用される地域
ZoneOffset
で表されます。 ZoneId
上でnormalized()
を呼び出すことで、固定オフセットIDがZoneOffset
として表現されることが保証されます。
実際のルールは、オフセットがいつ、どのように変化するかを記述し、ZoneRules
によって定義されます。 このクラスは単純に、基礎となるルールを取得するために使用されるIDです。 この方法は、ルールが政府によって定義されていて頻繁に変わるけれども、IDは固定しているために採用されます。
この違いには他の影響があります。 ZoneId
を直列化するとIDのみが送信されますが、ルールを直列化するとデータ・セット全体が送信されます。 同様に、2つのIDの比較はIDのみを調べますが、2つのルールの比較はデータ・セット全体を調べます。
タイムゾーンID
IDはシステム内で一意です。 3つのタイプのIDがあります。
もっとも単純なタイプのIDはZoneOffset
からのものです。 これは、Zと、+または-で始まるIDで構成されます。
次のタイプのIDは、なんらかの形式の接頭辞を持つ、オフセット・スタイルID(「GMT+2」や「UTC+01:00」など)です。 認識される接頭辞は、UTC、GMTおよびUTです。 オフセットは接尾辞で、作成時に正規化されます。 これらのIDは、normalized()
を使用してZoneOffset
に正規化できます。
3番目のタイプのIDは、地域ベースIDです。 地域ベースIDは2つ以上の文字で構成される必要があり、UTC、GMTまたはUT+または-で始まってはいけません。 地域ベースIDは構成で定義されます。ZoneRulesProvider
を参照してください。 構成は、IDから基礎となるZoneRules
へのルックアップを提供することを主眼としています。
タイムゾーン・ルールは政府によって定義され、頻繁に変わります。 タイムゾーン変更をモニターしてそれらを照合する組織(グループと呼ばれる)がいくつかあります。 デフォルトグループは、IANAタイムゾーン・データベース(TZDB)です。 他の組織には、IATA (航空業界団体)とMicrosoftが含まれます。
各グループは、提供する地域IDのために独自フォーマットを定義します。 TZDBグループは、Europe/LondonやAmerica/New_YorkなどのIDを定義します。 TZDB IDは、他のグループより優先されます。
重複を避けるために、TZDB以外のグループで提供されるすべてのIDにはグループ名が含まれるようにすることが強く推奨されています。 たとえば、IATA航空タイムゾーン地域IDは、一般的には3文字の空港コードと同じです。 しかし、ユトレヒトの空港はコード「UTC」を持ち、これは明らかに重複です。 TZDB以外のグループからの地域IDに推奨されるフォーマットは、グループ~地域です。 つまり、IATAデータが定義されている場合は、ユトレヒト空港はIATA~UTCになります。
直列化
このクラスは直列化でき、文字列ゾーンIDを外部形式で格納します。ZoneOffset
サブクラスは、UTC/グリニッジからのオフセットのみを格納する、専用フォーマットを使用します。
ZoneId
は、IDが不明であるJava Runtimeで直列化復元できます。 たとえば、サーバー側Java Runtimeが新しいゾーンIDで更新されたけれども、クライアント側Java Runtimeが更新されていない場合です。 この場合、ZoneId
オブジェクトは存在し、getId
、equals
、hashCode
、toString
、getDisplayName
およびnormalized
を使用して照会できます。 しかし、getRules
への呼び出しはZoneRulesException
で失敗します。 この方法は、タイムゾーン情報が不完全なJava Runtimeで、ZonedDateTime
はロードおよび照会されても変更されないように設計されています。
これはvalue-basedクラスです。プログラマは、equalのインスタンスを交換可能として扱い、同期にインスタンスを使用しないようにする必要があります。そうしないと、予期しない動作が発生する可能性があります。 たとえば、将来のリリースでは、同期が失敗する可能性があります。 比較する場合は、equals
メソッドを使用することをお薦めします。
- 実装要件:
- この抽象クラスは2つの実装を持ち、両方とも不変でスレッドセーフです。 一方の実装は地域ベースIDをモデル化し、もう一方はオフセット・ベースIDをモデル化する
ZoneOffset
です。 違いは直列化で現れます。 - 導入されたバージョン:
- 1.8
- 関連項目:
- 直列化された形式
-
フィールドのサマリー
フィールド -
メソッドのサマリー
修飾子と型メソッド説明boolean
このタイムゾーンIDが別のタイムゾーンIDと等しいかどうかをチェックします。static ZoneId
from(TemporalAccessor temporal)
時間的オブジェクトからZoneId
のインスタンスを取得します。利用可能なゾーンIDのセットを取得します。getDisplayName(TextStyle style, Locale locale)
「英国時間」や「+02:00」など、ゾーンのテキスト表現を取得します。abstract String
getId()
一意のタイムゾーンIDを取得します。abstract ZoneRules
getRules()
計算の実行を許可する、このIDのタイムゾーン・ルールを取得します。int
hashCode()
このタイムゾーンIDのハッシュ・コード。タイムゾーンIDを正規化し、可能な場合はZoneOffset
を返します。static ZoneId
IDからZoneId
のインスタンスを取得し、IDが有効で使用できることを確認します。static ZoneId
IDとZoneId
のインスタンスを取得し、別名マップを使用して標準ゾーンIDを補足します。static ZoneId
ofOffset(String prefix, ZoneOffset offset)
ZoneId
のインスタンスを取得して、オフセットをラップします。static ZoneId
システム・デフォルト・タイムゾーンを取得します。toString()
IDを使用して、このゾーンをString
として出力します。
-
フィールド詳細
-
SHORT_IDS
短いタイムゾーン名を使用できるようにするためのゾーン・オーバーライドのマップです。java.util.TimeZone
では、短いゾーンIDの使用は非推奨です。 このマップにより、of(String, Map)
ファクトリ・メソッド経由でIDを引き続き使用できます。このマップには、TZDB 2005r以降に一致するIDのマッピング(EST、MSTおよびHSTからサマー・タイムを含まないIDへのマップ)が含まれます。
このマップは次のとおりです。
- EST - -05:00
- HST - -10:00
- MST - -07:00
- ACT - Australia/Darwin
- AET - Australia/Sydney
- AGT - America/Argentina/Buenos_Aires
- ART - Africa/Cairo
- AST - America/Anchorage
- BET - America/Sao_Paulo
- BST - Asia/Dhaka
- CAT - Africa/Harare
- CNT - America/St_Johns
- CST - America/Chicago
- CTT - Asia/Shanghai
- EAT - Africa/Addis_Ababa
- ECT - Europe/Paris
- IET - America/Indiana/Indianapolis
- IST - Asia/Kolkata
- JST - Asia/Tokyo
- MIT - Pacific/Apia
- NET - Asia/Yerevan
- NST - Pacific/Auckland
- PLT - Asia/Karachi
- PNT - America/Phoenix
- PRT - America/Puerto_Rico
- PST - America/Los_Angeles
- SST - Pacific/Guadalcanal
- VST - Asia/Ho_Chi_Minh
-
-
メソッドの詳細
-
systemDefault
public static ZoneId systemDefault()システム・デフォルト・タイムゾーンを取得します。これは、
TimeZone.getDefault()
を照会してデフォルト・タイムゾーンを見つけ、それをZoneId
に変換します。 システム・デフォルト・タイムゾーンが変更されると、このメソッドの結果も変わります。- 戻り値:
- ゾーンID、null以外
- 例外:
DateTimeException
- 変換されたゾーンIDのフォーマットが無効な場合ZoneRulesException
- 変換されたゾーン地域IDが見つからない場合
-
getAvailableZoneIds
利用可能なゾーンIDのセットを取得します。このセットには、使用可能なすべての地域ベースIDの文字列形式が含まれます。 オフセットベース・ゾーンIDは返されるセットに含まれません。 IDは
of(String)
に渡してZoneId
を作成できます。ゾーンIDのセットは時間経過とともに増える可能性がありますが、一般的アプリケーションではゾーンIDのセットは固定されています。 このメソッドのすべての呼出しはスレッドセーフです。
- 戻り値:
- ゾーンIDのセットの変更可能コピー、nullでない
-
of
IDとZoneId
のインスタンスを取得し、別名マップを使用して標準ゾーンIDを補足します。タイムゾーンの多くのユーザーは、PST(Pacific Standard Time)やPDT(Pacific Daylight Time)などの短い略称を使用します。 これらの略称は一意でないため、IDとして使用できません。 このメソッドにより、文字列からタイムゾーンへのマップをアプリケーション内で設定して再利用できます。
- パラメータ:
zoneId
- タイムゾーンID、nullでないaliasMap
- 別名ゾーンID (一般的には略称)から実際のゾーンIDへのマップ、nullでない- 戻り値:
- ゾーンID、null以外
- 例外:
DateTimeException
- ゾーンIDのフォーマットが無効な場合ZoneRulesException
- ゾーンIDが、見つからない地域IDの場合
-
of
IDからZoneId
のインスタンスを取得し、IDが有効で使用できることを確認します。このメソッドはIDを解析して
ZoneId
またはZoneOffset
を作成します。 IDがZ、または+または-で始まる場合は、ZoneOffset
が返されます。 結果は常に、ZoneRules
を取得できる有効なIDになります。解析では、次のようにゾーンIDをステップ・バイ・ステップに照合します。
- ゾーンIDがZと等しい場合、結果は
ZoneOffset.UTC
です。 - ゾーンIDが単一文字で構成される場合は、ゾーンIDは無効で、
DateTimeException
がスローされます。 - ゾーンIDが+または-で始まる場合は、ゾーンIDは
ZoneOffset.of(String)
を使用してZoneOffset
として解析されます。 - ゾーンIDがGMT、UTCまたはUTと等しい場合は、結果は同じIDおよび
ZoneOffset.UTC
と同等のルールを持つZoneId
です。 - ゾーンIDがUTC+、UTC-、GMT+、GMT-、UT+またはUT-で始まる場合は、ゾーンIDは接頭辞付きオフセットベースIDです。 IDは、2または3文字の接頭辞と記号で始まる接尾辞の、2つに分割されます。 接尾辞は
ZoneOffset
として解析されます。 結果は、指定されたUTC/GMT/UT接頭辞と正規化されたオフセットID(ZoneOffset.getId()
など)を持つ、ZoneId
になります。 返されるZoneId
のルールは、解析されたZoneOffset
と同等になります。 - その他のすべてのIDは、地域ベースゾーンIDとして解析されます。 地域IDは正規表現
[A-Za-z][A-Za-z0-9~/._+-]+
と一致する必要があり、そうでない場合はDateTimeException
がスローされます。 ゾーンIDが構成済IDセット内にない場合は、ZoneRulesException
がスローされます。 地域IDの詳細フォーマットは、データを提供するグループによって異なります。 データのデフォルト・セットは、IANAタイムゾーン・データベース(TZDB)で提供されます。 これは、{area}/{city}形式(Europe/Paris、America/New_Yorkなど)の地域IDを持ちます。 これはTimeZone
からのほとんどのIDと互換です。
- パラメータ:
zoneId
- タイムゾーンID、nullでない- 戻り値:
- ゾーンID、null以外
- 例外:
DateTimeException
- ゾーンIDのフォーマットが無効な場合ZoneRulesException
- ゾーンIDが、見つからない地域IDの場合
- ゾーンIDがZと等しい場合、結果は
-
ofOffset
public static ZoneId ofOffset(String prefix, ZoneOffset offset)ZoneId
のインスタンスを取得して、オフセットをラップします。接頭辞がGMT、UTCまたはUTの場合、接頭辞とゼロでないオフセットを持つ
ZoneId
が返されます。 接頭辞が空の""
の場合は、ZoneOffset
が返されます。- パラメータ:
prefix
- タイムゾーンID、nullでないoffset
- オフセット、nullでない- 戻り値:
- ゾーンID、null以外
- 例外:
IllegalArgumentException
- 接頭辞がGMT、UTC、UTまたは空のいずれでもない場合
-
from
public static ZoneId from(TemporalAccessor temporal)時間的オブジェクトからZoneId
のインスタンスを取得します。これは、指定された時間的オブジェクトに基づくゾーンを取得します。
TemporalAccessor
は日付および時間情報の任意セットを表し、それをこのファクトリがZoneId
のインスタンスに変換します。TemporalAccessor
は日付および時間情報のなんらかの形式を表します。 このファクトリは任意の時間的オブジェクトをZoneId
のインスタンスに変換します。変換は、
TemporalQueries.zone()
を使用して、オフセット・ベース・ゾーンより地域ベース・ゾーンを優先する方法でゾーンを取得しようとします。このメソッドは関数型インタフェース
TemporalQuery
のシグネチャに一致するため、メソッド参照ZoneId::from
を介して、問合せとして使用できます。- パラメータ:
temporal
- 変換する一時オブジェクト、null以外- 戻り値:
- ゾーンID、null以外
- 例外:
DateTimeException
-ZoneId
に変換できない場合
-
getId
public abstract String getId()一意のタイムゾーンIDを取得します。このIDはこのオブジェクトを一意に定義します。 オフセットベースIDのフォーマットは、
ZoneOffset.getId()
によって定義されます。- 戻り値:
- タイムゾーンの一意ID、nullでない
-
getDisplayName
「英国時間」や「+02:00」など、ゾーンのテキスト表現を取得します。これは、タイムゾーンIDを識別するために使用される、ユーザーへの提示に適したテキスト名を返します。 パラメータは返されるテキストとロケールのスタイルを制御します。
テキスト・マッピングが見つからない場合は、
フルID
が返されます。- パラメータ:
style
- 必要なテキストの長さ、nullでないlocale
- 使用するロケール。null以外- 戻り値:
- ゾーンのテキスト値、nullでない
-
getRules
public abstract ZoneRules getRules()計算の実行を許可する、このIDのタイムゾーン・ルールを取得します。ルールは、指定されたインスタントまたはローカル日付/時間のオフセットを見つけるなど、タイムゾーンに関連付けられた機能を提供します。
タイムゾーンは、それが直列化復元されるJava Runtimeに、ルールを格納したJava Runtimeと同じルールがロードされていない場合は、無効になる可能性があります。 kの場合、このメソッドを呼び出すと
ZoneRulesException
がスローされます。ルールは
ZoneRulesProvider
によって提供されます。 高度なプロバイダは、Java Runtimeの再起動なしでルールの動的更新をサポートする場合があります。 その場合は、このメソッドの結果が時間経過とともに変わることがあります。 それでも個々の呼出しはスレッドセーフのままです。ZoneOffset
は常に、オフセットが変わらないルールのセットを返します。- 戻り値:
- ルール、nullでない
- 例外:
ZoneRulesException
- このIDに使用できるルールがない場合
-
normalized
public ZoneId normalized()タイムゾーンIDを正規化し、可能な場合はZoneOffset
を返します。このIDのかわりに使用できる、正規化された
ZoneId
を返します。 結果は、このオブジェクトによって返されるものと同等のZoneRules
を持ちますが、getId()
によって返されるIDが異なる場合があります。正規化は、この
ZoneId
のルールが固定オフセットを持つかどうかをチェックします。 固定オフセットを持つ場合は、そのオフセットに等しいZoneOffset
が返されます。 それ以外の場合は、this
が返されます。- 戻り値:
- タイムゾーンの一意ID、nullでない
-
equals
public boolean equals(Object obj)このタイムゾーンIDが別のタイムゾーンIDと等しいかどうかをチェックします。比較はIDベースです。
- オーバーライド:
equals
、クラス:Object
- パラメータ:
obj
- チェックするオブジェクト、nullはfalseを返す- 戻り値:
- これが他方のタイムゾーンIDと等しい場合はtrue
- 関連項目:
Object.hashCode()
、HashMap
-
hashCode
public int hashCode()このタイムゾーンIDのハッシュ・コード。- オーバーライド:
hashCode
、クラス:Object
- 戻り値:
- 適切なハッシュ・コード
- 関連項目:
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
toString
public String toString()IDを使用して、このゾーンをString
として出力します。
-