Java.sql.Date
とLocalDate
(Java 8)の間で変換する正しい方法は何ですか?
Java 8バージョン(以降)のJava.sql.Date
には、 LocalDate
および valueOf(LocalDate)
を含むtoLocalDate
のサポートが組み込まれています。
LocalDate
からJava.sql.Date
に変換するには、使用できます
Java.sql.Date.valueOf( localDate );
Java.sql.Date
からLocalDate
に変換するには:
sqlDate.toLocalDate();
タイムゾーン:
LocalDate
型はタイムゾーン情報を格納しませんが、Java.sql.Date
は格納します。したがって、上記の変換を使用する場合、結果はシステムのデフォルトのタイムゾーンに依存します(コメントで指摘されているように)。
デフォルトのタイムゾーンに依存したくない場合は、次の変換を使用できます。
Date now = new Date();
LocalDate current = now.toInstant()
.atZone(ZoneId.systemDefault()) // Specify the correct timezone
.toLocalDate();