⏰
Java で LocalDateTime を別タイムゾーンの時刻に変換する
単純に plusHours
や minusHours
してもいいかもしれないが、タイムゾーンを明示しての変換の方が何かと良い場面は多そう。この場合、一度 OffsetDateTime
に変換して withZoneSameInstant
メソッドを使うのがよさそうだ。
例)UTC の LocalDateTime を JST の LocalDateTime に変換する
var utcLocalDateTime = LocalDateTime.of(
LocalDate.of(2021, 12, 4),
LocalTime.of(12, 30, 0)
);
// 一度 OffsetDateTime に変換し、
var utcOffsetDateTime = utcLocalDateTime.atZone(ZoneOffset.UTC);
// withZoneSameInstant メソッドを使って同時間軸の別タイムゾーンに変換。
var jstOffsetDateTime = utcOffsetDateTime.withZoneSameInstant(ZoneId.of("Asia/Tokyo"));
// 改めて LocalDateTime に変換する。
var jstLocalDateTime = jstOffsetDateTime.toLocalDateTime();
Discussion