web-dev-qa-db-ja.com

LocalDateとsql.Date間の変換

Java.sql.DateLocalDate(Java 8)の間で変換する正しい方法は何ですか?

45
maja

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();
94
maja