在 LocalDate 和 sql 之间转换。日期

2022-08-31 13:48:04

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


答案 1

Java 8 版本(及更高版本)内置了对 的支持,包括 toLocalDatevalueOf(LocalDate)。java.sql.DateLocalDate

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

java.sql.Date.valueOf( localDate );

并转换为 :java.sql.DateLocalDate

sqlDate.toLocalDate();

时区:

该类型不存储时区信息,但会存储。因此,使用上述转换时,结果取决于系统的默认时区(如注释中所述)。LocalDatejava.sql.Date

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

Date now = new Date();
LocalDate current = now.toInstant()
                       .atZone(ZoneId.systemDefault()) // Specify the correct timezone
                       .toLocalDate();

答案 2