在 Java8(或更高版本)中,在 java.sql.Date和 LocalDate(两个方向)之间转换的正确方法是什么?
java.sql.Date
LocalDate
java.sql.Date的 Java8版本(以及更高版本)内置了对 LocalDate的支持,包括 toLocalDate和 valueOf(LocalDate)。
toLocalDate
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();