Postgresqlに日時のデータを保存する場合、全ての時間帯付きの日付と時刻は UTC で内部的に保存される
そこで、データベースとアプリケーション間の日時の整合性を保つために、Javaアプリで扱う日時も UTC で固定したい
Javaでオフセット(時差)付きの日時を扱いたい場合はOffsetDateTime
を使うのが良い
OffsetDateTimeの概要は以下
使い方は以下
import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; public class Example { public static void main(String[] args) { // APIから取得した日時文字列(例:2024-01-06T15:00:00+02:00) String dateTimeFromApi = "2024-01-06T15:00:00+02:00"; // 文字列をOffsetDateTimeに変換 OffsetDateTime odt = OffsetDateTime.parse(dateTimeFromApi, DateTimeFormatter.ISO_OFFSET_DATE_TIME); // 処理(例:UTCに変換) OffsetDateTime utcTime = odt.withOffsetSameInstant(OffsetDateTime.now().getOffset()); System.out.println("UTC Time: " + utcTime); } }