在 LocalDate 和 sql.Date 之间转换

Convert between LocalDate and sql.Date

在 Java 8(或更高)中,java.sql.DateLocalDate(双向)之间的正确转换方法是什么?

java.sql.Date 的 Java 8 版本(及更高版本)内置了对 LocalDate 的支持,包括 toLocalDate and valueOf(LocalDate).

要从 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();