OffsetDateTime , ZonedDateTime

この2つを積極的に使うプロジェクトって、意外と少ない。

LocalDateTime localdatetime = LocalDateTime.now();

// LocalDateTime → ZoneDateTime
ZonedDateTime zoneddatetime = localdatetime.atZone(ZoneId.systemDefault());

// LocalDateTime → OffsetDateTime
OffsetDateTime offsetdatetime = localdatetime.atOffset(ZoneOffset.ofHours(9));

それぞれ、toString() として標準出力すると

2024-04-21T16:49:23.526946600
2024-04-21T16:49:23.526946600+09:00[Asia/Tokyo]
2024-04-21T16:49:23.526946600+09:00

以下は、OffsetDateTime 覚えての以下のインスタンスメソッドは、覚えておくといいかも。
withOffsetSameInstant(ZoneOffset offset)
結果が暗黙の日の同じインスタントを持つようにしながら、指定されたオフセットを使ってこのOffsetTimeのコピーを返します。

withOffsetSameLocal(ZoneOffset offset)
結果が同じローカル時間を持つようにしながら、指定されたオフセットを使ってこのOffsetTimeのコピーを返します。