在 LocalDate 和 sql.Date 之间进行转换

在 Java8(或更高版本)中,在 java.sql.DateLocalDate(两个方向)之间转换的正确方法是什么?

105924 次浏览

java.sql.Date的 Java8版本(以及更高版本)内置了对 LocalDate的支持,包括 toLocalDatevalueOf(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();