在 LocalDate 和 sql.Date 之间转换
Convert between LocalDate and sql.Date
在 Java 8(或更高)中,java.sql.Date
和 LocalDate
(双向)之间的正确转换方法是什么?
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();
在 Java 8(或更高)中,java.sql.Date
和 LocalDate
(双向)之间的正确转换方法是什么?
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();