Java 8 – ZonedDateTimeの例
異なる国間でタイムゾーンを変換する方法を示す `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]