Java 8 - ZonedDateTimeの例

paris-time-zone、width = 658、height = 189

異なる国間でタイムゾーンを変換する方法を示す `java.time.ZonedDateTime`の例はほとんどありません。

1.マレーシア(KUL) - >日本(HND)

マレーシアクアラルンプール(UTC + 08:00)から日本東京羽田(UTC + 09:00)へのフライト情報を確認する

---Flight Detail---

クアラルンプール(KUL) - >東京羽田(HND)フライト時間:7時間

(KUL-Depart)1430、2020年8月22日 - > 2230、2016年8月22日(HND-Arrive)

__P.S日本東京はマレーシアより1時間ほど速いクアラルンプール

DifferentTimeZoneExample1.java

パッケージcom.mkyong.timezone;

import java.time.LocalDateTime; import java.time.Month; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter;

パブリッククラスDifferentTimeZoneExample1 {

public static void main(String[]args){

DateTimeFormatter format = DateTimeFormatter.ofPattern( "HHmm、dd MMM yyyy");

LocalDateTime ldt = LocalDateTime.of(2016、Month.AUGUST、22、14、30); System.out.println( "LocalDateTime:" + format.format(ldt));

//UTC+8         ZonedDateTime klDateTime = ldt.atZone(ZoneId.of("Asia/Kuala__Lumpur"));         System.out.println("Depart : " + format.format(klDateTime));

//UTC+9 and flight duration = 7 hours         ZonedDateTime japanDateTime = klDateTime.withZoneSameInstant(ZoneId.of("Asia/Tokyo")).plusHours(7);         System.out.println("Arrive : " + format.format(japanDateTime));

System.out.println( "\ n ---詳細---"); System.out.println( "出発:" + klDateTime); System.out.println( "Arrive:" + japanDateTime);

}

}

出力

LocalDateTime:1430、2020年8月22日出発:1430、2020年8月22日到着:2230、2020年8月22日

---Detail---
Depart : 2016-08-22T14:30+08:00[Asia/Kuala__Lumpur]Arrive : 2016-08-22T22:30+09:00[Asia/Tokyo]....

===  2.フランス、パリ - > -05:00

フランス、パリ(UTC + 02:00、DST)からハードコードされた(UTC-05:00)タイムゾーン(ニューヨークなど)までの別のタイムゾーンの例は、

---Flight Detail---

フランス、パリ - > UTC-05:00飛行時間:8時間10分

(出発)1430、2016年8月22日 - > 1540、2016年8月22日(到着)

DifferentTimeZoneExample2.java

パッケージcom.mkyong.timezone;

import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZoneOffset; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter;

パブリッククラスDifferentTimeZoneExample2 {

public static void main(String[]args){

DateTimeFormatter format = DateTimeFormatter.ofPattern( "HHmm、dd MMM yyyy");

System.out.println( "\ n ---詳細---"); System.out.println( "Depart:" parisDateTime); System.out.println( "Arrive:" nyDateTime);

}

}

出力

LocalDateTime:1430、2020年8月22日出発:1430、2020年8月22日到着:1540、2016年8月22日

---Detail--- Depart : 2016-08-22T14:30+02:00[Europe/Paris]Arrive : 2016-08-22T15:40-05:00

** 夏時間(DST)**  +パリ、通常UTC + 1は、27/marから2016年10月30日までDST(1時間= UTC + 2を加算)を持つ。上記の出力を確認すると、 `java.time` DSTを正しく計算して処理します。

=== 参考文献

.  https://en.wikipedia.org/wiki/Daylight__saving__time--Wikipedia  -

夏時間]。 https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html[DateTimeFormatter

JavaDoc]。 https://docs/

JavaDoc]。 http://www.timeanddate.com/time/zone/france/paris[パリのタイムゾーン]

.  http://www.airasia.com/[航空券 - フライト情報]

. リンク://java8/java-8-convert-instant-to-zoneddatetime/[Java 8  - 変換

ZonedDateTimeへのインスタント]。 link://java/java-convert-date-time-time-time-timezone/[Java  -

タイムゾーン間の日付と時刻を変換する]。リンク://java8/java-8-how-to-convert-string-to-localdate/[Java 8  - 方法

StringをLocalDateに変換する]

link://tag/dst/[dst]link://タグ/java-time/[java.time]リンク://タグ/java8/[java8]リンク://タグ/タイムゾーン/[タイムゾーン]link://tag/utc/[utc]link://tag/zoneddatetime/[zoneddatetime]link://タグ/zoneoffset/[zoneoffset]