public abstract class ZoneId extends Object implements Serializable
ヨーロッパ/パリ
など)。
ZoneId
は、Instant
およびLocalDateTime
の間の変換に使用するルールを識別するために使用されます。タイプの異なる2つのIDがあります。
ZoneOffset
で表されます。ZoneId
上でnormalized()
を呼び出すことで、固定オフセットIDがZoneOffset
として表現されることが保証されます。
実際のルールは、オフセットがいつ、どのように変化するかを記述し、ZoneRules
によって定義されます。このクラスは単純に、基礎となるルールを取得するために使用されるIDです。この方法は、ルールが政府によって定義されていて頻繁に変わるけれども、IDは固定しているために採用されます。
この違いには他の影響があります。ZoneId
を直列化するとIDのみが送信されますが、ルールを直列化するとデータ・セット全体が送信されます。同様に、2つのIDの比較はIDのみを調べますが、2つのルールの比較はデータ・セット全体を調べます。
もっとも単純なタイプの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になります。
ZoneOffset
サブクラスは、UTC/グリニッジからのオフセットのみを格納する、専用フォーマットを使用します。
ZoneId
は、IDが不明であるJava Runtimeで直列化復元できます。たとえば、サーバー側Java Runtimeが新しいゾーンIDで更新されたけれども、クライアント側Java Runtimeが更新されていない場合です。この場合、ZoneId
オブジェクトは存在し、getId
、equals
、hashCode
、toString
、getDisplayName
およびnormalized
を使用して照会できます。しかし、getRules
への呼び出しはZoneRulesException
で失敗します。この方法は、タイムゾーン情報が不完全なJava Runtimeで、ZonedDateTime
はロードおよび照会されても変更されないように設計されています。
これは値ベースのクラスで、ID依存操作(参照等価性(==
)、IDハッシュ・コード、同期など)をZoneId
のインスタンスで使用すると、予期できない結果になる可能性があり、避けてください。比較する場合は、equals
メソッドを使用することをお薦めします。
ZoneOffset
です。違いは直列化で現れます。修飾子と型 | フィールドと説明 |
---|---|
static Map<String,String> |
SHORT_IDS
短いタイムゾーン名を使用できるようにするためのゾーン・オーバーライドのマップです。
|
修飾子と型 | メソッドと説明 |
---|---|
boolean |
equals(Object obj)
このタイムゾーンIDが別のタイムゾーンIDと等しいかどうかをチェックします。
|
static ZoneId |
from(TemporalAccessor temporal)
時間的オブジェクトから
ZoneId のインスタンスを取得します。 |
static Set<String> |
getAvailableZoneIds()
利用可能なゾーンIDのセットを取得します。
|
String |
getDisplayName(TextStyle style, Locale locale)
「英国時間」や「+02:00」など、ゾーンのテキスト表現を取得します。
|
abstract String |
getId()
一意のタイムゾーンIDを取得します。
|
abstract ZoneRules |
getRules()
計算の実行を許可する、このIDのタイムゾーン・ルールを取得します。
|
int |
hashCode()
このタイムゾーンIDのハッシュ・コード。
|
ZoneId |
normalized()
タイムゾーンIDを正規化し、可能な場合は
ZoneOffset を返します。 |
static ZoneId |
of(String zoneId)
IDから
ZoneId のインスタンスを取得し、IDが有効で使用できることを確認します。 |
static ZoneId |
of(String zoneId, Map<String,String> aliasMap)
IDと
ZoneId のインスタンスを取得し、別名マップを使用して標準ゾーンIDを補足します。 |
static ZoneId |
ofOffset(String prefix, ZoneOffset offset)
ZoneId のインスタンスを取得して、オフセットをラップします。 |
static ZoneId |
systemDefault()
システム・デフォルト・タイムゾーンを取得します。
|
String |
toString()
IDを使用して、このゾーンを
String として出力します。 |
public static final Map<String,String> SHORT_IDS
java.util.TimeZone
では、短いゾーンIDの使用は非推奨です。このマップにより、of(String, Map)
ファクトリ・メソッド経由でIDを引き続き使用できます。
このマップには、TZDB 2005r以降に一致するIDのマッピング(EST、MSTおよびHSTからサマー・タイムを含まないIDへのマップ)が含まれます。
このマップは次のとおりです。
public static ZoneId systemDefault()
これは、TimeZone.getDefault()
を照会してデフォルト・タイムゾーンを見つけ、それをZoneId
に変換します。システム・デフォルト・タイムゾーンが変更されると、このメソッドの結果も変わります。
DateTimeException
- 変換されたゾーンIDのフォーマットが無効な場合ZoneRulesException
- 変換されたゾーン地域IDが見つからない場合public static Set<String> getAvailableZoneIds()
このセットには、使用可能なすべての地域ベースIDの文字列形式が含まれます。オフセットベース・ゾーンIDは返されるセットに含まれません。IDはof(String)
に渡してZoneId
を作成できます。
ゾーンIDのセットは時間経過とともに増える可能性がありますが、一般的アプリケーションではゾーンIDのセットは固定されています。このメソッドのすべての呼出しはスレッドセーフです。
public static ZoneId of(String zoneId, Map<String,String> aliasMap)
ZoneId
のインスタンスを取得し、別名マップを使用して標準ゾーンIDを補足します。
タイムゾーンの多くのユーザーは、PST(Pacific Standard Time)やPDT(Pacific Daylight Time)などの短い略称を使用します。これらの略称は一意でないため、IDとして使用できません。このメソッドにより、文字列からタイムゾーンへのマップをアプリケーション内で設定して再利用できます。
zoneId
- タイムゾーンID、nullでないaliasMap
- 別名ゾーンID (一般的には略称)から実際のゾーンIDへのマップ、nullでないDateTimeException
- ゾーンIDのフォーマットが無効な場合ZoneRulesException
- ゾーンIDが、見つからない地域IDの場合public static ZoneId of(String zoneId)
ZoneId
のインスタンスを取得し、IDが有効で使用できることを確認します。
このメソッドはIDを解析してZoneId
またはZoneOffset
を作成します。IDがZ、または+または-で始まる場合は、ZoneOffset
が返されます。結果は常に、ZoneRules
を取得できる有効なIDになります。
解析では、次のようにゾーンIDを段階的に照合します。
ZoneOffset.UTC
です。
DateTimeException
がスローされます。
ZoneOffset.of(String)
を使用してZoneOffset
として解析されます。
ZoneOffset.UTC
と同等のルールを持つZoneId
です。
ZoneOffset
として解析されます。結果は、指定されたUTC/GMT/UT接頭辞と正規化されたオフセットID(ZoneOffset.getId()
など)を持つ、ZoneId
になります。返されるZoneId
のルールは、解析されたZoneOffset
と同等になります。
[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でないDateTimeException
- ゾーンIDのフォーマットが無効な場合ZoneRulesException
- ゾーンIDが、見つからない地域IDの場合public static ZoneId ofOffset(String prefix, ZoneOffset offset)
ZoneId
のインスタンスを取得して、オフセットをラップします。
接頭辞がGMT、UTCまたはUTの場合、接頭辞とゼロでないオフセットを持つZoneId
が返されます。接頭辞が空の""
の場合は、ZoneOffset
が返されます。
prefix
- タイムゾーンID、nullでないoffset
- オフセット、nullでないIllegalArgumentException
- 接頭辞がGMT、UTC、UTまたは空のいずれでもない場合public static ZoneId from(TemporalAccessor temporal)
ZoneId
のインスタンスを取得します。
これは、指定された時間的オブジェクトに基づくゾーンを取得します。TemporalAccessor
は日付および時間情報の任意セットを表し、それをこのファクトリがZoneId
のインスタンスに変換します。
TemporalAccessor
は日付および時間情報のなんらかの形式を表します。このファクトリは任意の時間的オブジェクトをZoneId
のインスタンスに変換します。
変換は、TemporalQueries.zone()
を使用して、オフセット・ベース・ゾーンより地域ベース・ゾーンを優先する方法でゾーンを取得しようとします。
このメソッドは関数型インタフェースTemporalQuery
のシグネチャに一致し、メソッド参照ZoneId::from
を介して問合せとして使用できます。
temporal
- 変換する一時オブジェクト、null以外DateTimeException
- ZoneId
に変換できない場合public abstract String getId()
このIDはこのオブジェクトを一意に定義します。オフセットベースIDのフォーマットは、ZoneOffset.getId()
によって定義されます。
public String getDisplayName(TextStyle style, Locale locale)
これは、タイムゾーンIDを識別するために使用される、ユーザーへの提示に適したテキスト名を返します。パラメータは返されるテキストとロケールのスタイルを制御します。
テキスト・マッピングが見つからない場合は、フルID
が返されます。
style
- 必要なテキストの長さ、nullでないlocale
- 使用するロケール。null以外public abstract ZoneRules getRules()
ルールは、指定されたインスタントまたはローカル日付/時間のオフセットを見つけるなど、タイムゾーンに関連付けられた機能を提供します。
タイムゾーンは、それが直列化復元されるJava Runtimeに、ルールを格納したJava Runtimeと同じルールがロードされていない場合は、無効になる可能性があります。kの場合、このメソッドを呼び出すとZoneRulesException
がスローされます。
ルールはZoneRulesProvider
によって提供されます。高度なプロバイダは、Java Runtimeの再起動なしでルールの動的更新をサポートする場合があります。その場合は、このメソッドの結果が時間経過とともに変わることがあります。それでも個々の呼出しはスレッドセーフのままです。
ZoneOffset
は常に、オフセットが変わらないルールのセットを返します。
ZoneRulesException
- このIDに使用できるルールがない場合public ZoneId normalized()
ZoneOffset
を返します。
このIDのかわりに使用できる、正規化されたZoneId
を返します。結果は、このオブジェクトによって返されるものと同等のZoneRules
を持ちますが、getId()
によって返されるIDが異なる場合があります。
正規化は、このZoneId
のルールが固定オフセットを持つかどうかをチェックします。固定オフセットを持つ場合は、そのオフセットに等しいZoneOffset
が返されます。それ以外の場合は、this
が返されます。
public boolean equals(Object obj)
比較はIDベースです。
equals
、クラス: Object
obj
- チェックするオブジェクト、nullはfalseを返すObject.hashCode()
、HashMap
public int hashCode()
hashCode
、クラス: Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.