不支持的OperationException - 为什么你不能在java.sql.Date上调用instant()?

2022-08-31 13:39:01

该类具有一个名为的方法,该方法将实例转换为 .java.util.DatetoInstant()Datejava.time.Instant

该类扩展了该类,但是当我尝试调用 一个 时,我收到一个 .java.sql.Datejava.util.DatetoInstant()java.sql.DateUnsupportedOperationException

为什么 上出现不受支持的操作?toInstant()java.sql.Date

将a转换为a的“正确”方法是什么?java.sql.Datejava.time.Instant


答案 1

和 之间的正确映射是:java.sql.Datejava.timeLocalDate

LocalDate date = sqlDate.toLocalDate();

如果你真的必须,你可以推导出一个,尽管额外的信息(时间)将是任意的。例如:Instant

Instant i = date.atStartOfDay(ZoneOffset.UTC).toInstant();

答案 2

根据JavaDoc

由于没有时间分量,因此无法将其转换为sql.Datetime.Instant

此方法始终引发不受支持的操作异常,不应使用此方法,因为 SQL Date 值没有时间分量。


推荐