69

在 Java 8(或更高版本)中java.sql.Date和(双向)之间转换的正确方法是什么?LocalDate

4

1 回答 1

147

Java 8 版本(及更高版本)java.sql.Date已内置支持LocalDate,包括toLocalDatevalueOf(LocalDate).

要从转换LocalDatejava.sql.Date您可以使用

java.sql.Date.valueOf( localDate );

并转换java.sql.DateLocalDate

sqlDate.toLocalDate();

时区:

LocalDate类型不存储时区信息,而存储java.sql.Date。因此,在使用上述转换时,结果取决于系统的默认时区(如注释中所指出的)。

如果您不想依赖默认时区,可以使用以下转换:

Date now = new Date();
LocalDate current = now.toInstant()
                       .atZone(ZoneId.systemDefault()) // Specify the correct timezone
                       .toLocalDate();
于 2015-04-20T15:05:42.137 回答