1.ZonedDateTime
クラス
Date Time API にはもう 1 つの非常に興味深いクラスがあります。それはZonedDateTime
class です。その主な目的は、異なるタイムゾーンでの日付の操作を容易にすることです。
LocalDate
日付を表すのに最適です。たとえば、誕生日。私の誕生日はどこにいても3月15日です。これは日付の一例です。
LocalTime
目覚まし時計の設定時間のように、時間を説明するのに最適です。目覚ましを午前 5 時にセットしましたが、どこにいるかは関係ありません。午前5時は午前5時です。これは時間を扱う例です。
ここで、フライトを予約するアプリケーションを作成しているとします。飛行機は現地時間に基づいて離陸、到着します。飛行機は一定時間飛行しますが、タイムゾーンは変更される可能性があります。
時間帯
ところで、タイムゾーンは本当に混乱しています。タイムゾーンが 24 あると考えているなら、それは大きな間違いです。
たとえば、インドの時間はグリニッジ標準時と 5 時間半異なりますGMT+5:30
。夏時間に切り替える国もあれば、切り替えない国もあります。さらに、国によっては、1 年の異なる時期にサマータイムに切り替わります。
また、一部の国では、夏時間を廃止したり、再導入したり、再度中止したりする法律を制定しています。
いずれにせよ、世界にはタイムゾーンがあり、各タイムゾーン内には 1 つの時間が存在します。異なるゾーンの時刻は、1 年の特定の期間では一致し、他の期間では異なる場合があります。タイム ゾーンは通常、そのタイム ゾーンにある主要都市にちなんで名付けられます: Europe/Monaco
、Asia/Singapore
ただし例外もあります — US/Pacific
。
現在、公式には 599 のタイムゾーンがあります。考えてみてください: 599。24 には程遠いです。グローバルな世界へようこそ。
ZoneId
パッケージのクラスは、Javajava.time
でタイムゾーンを格納するために使用されます。
ちなみに、これには静的getAvailableZoneIds()
メソッドがあり、現在知られているすべてのタイムゾーンのセットを返します。すべてのゾーンのリストを取得するには、次のコードを記述する必要があります。
コード | コンソール出力(一部) |
---|---|
|
|
ZoneId
オブジェクトを名前で取得するには、静的of()
メソッドを使用する必要があります。
コード | ノート |
---|---|
|
|
2.ZonedDateTime
オブジェクトの作成
オブジェクトを作成するときはZonedDateTime
、クラスの静的now()
メソッドを呼び出してZoneId
オブジェクトを渡す必要があります。
コード | コンソール出力 |
---|---|
|
|
ZoneId
メソッドにオブジェクトを渡さない場合now()
(それが許可されている場合)、タイムゾーンはプログラムを実行しているコンピュータの設定に基づいて自動的に決定されます。
例:
コード | コンソール出力 |
---|---|
|
|
グローバル日付をローカル日付に変換する
の興味深い機能の 1 つは、ZonedDateTime
ローカルの日付と時刻に変換できることです。例:
ZoneId zone = ZoneId.of("Africa/Cairo");
ZonedDateTime cairoTime = ZonedDateTime.now(zone);
LocalDate localDate = cairoTime.toLocalDate();
LocalTime localTime = cairoTime.toLocalTime();
LocalDateTime localDateTime = cairoTime.toLocalDateTime();
3. 時間の使い方
クラスと同様LocalDateTime
、このZonedDateTime
クラスにも日付と時刻の個々の要素を取得する方法がたくさんあります。これらのメソッドのリストを次に示します。
|
特定の日付の年を返します |
|
日付の月を返します: いくつかの定数の 1 つ —JANUARY, FEBRUARY, ...; |
|
日付の月のインデックスを返します。1月 == 1 |
|
月の日のインデックスを返します |
|
曜日を返します: いくつかの定数の 1 つ —MONDAY, TUESDAY, ...; |
|
その年の日付のインデックスを返します |
|
時間を返します |
|
分を返します |
|
秒を返します |
|
ナノ秒を返します |
すべてのメソッドは、クラスのメソッドと完全に類似していますLocalDateTime
。そしてもちろん、このZonedDateTime
クラスには日付と時刻を操作できるメソッドがあります。ただし、メソッドが呼び出されるオブジェクトは変わりません。代わりに、新しいZonedDateTime
オブジェクトを返します。
メソッド | 説明 |
---|---|
|
日付に年を加算します |
|
日付に月を加算します |
|
日付に日数を加算します |
|
時間を追加します |
|
分を追加します |
|
秒を追加します |
|
ナノ秒を追加します |
|
日付から年を減算します |
|
日付から月を減算します |
|
日付から日数を減算します |
|
時間を減算します |
|
分を減算します |
|
秒を減算します |
|
ナノ秒を減算します |
ここでのすべてのことは、今検討したクラスから類推して明らかだと思うので、例は示しません。
GO TO FULL VERSION