Puede que se de el caso de que encuentres algún problema con tu código o proyecto, recuerda probar siempre en un entorno de testing antes aplicar el código al proyecto final.
Solución:
El mapeo correcto entre java.sql.Date
y java.time
es LocalDate
:
LocalDate date = sqlDate.toLocalDate();
si realmente debesentonces puede derivar un Instant
, aunque la información adicional (tiempo) será arbitraria. Por ejemplo:
Instant i = date.atStartOfDay(ZoneOffset.UTC).toInstant();
Compruebe el JavaDoc
Ya que sql.Date
no tiene un componente de tiempo, no hay posibilidad de convertirlo a time.Instant
Este método siempre genera una excepción UnsupportedOperationException y no debe usarse porque los valores de fecha de SQL no tienen un componente de hora.
java.sql.Date solo admite componentes de fecha (fecha, mes, año). NO admite componentes de tiempo (hora, minuto, segundo, milisegundo). toInstant requiere componentes de fecha y hora, por lo que toInstant en la instancia de java.sql.Date arroja la excepción UnsupportedOperationException.
al documento Java instantáneo
Este método siempre genera una excepción UnsupportedOperationException y no debe usarse porque los valores de fecha de SQL no tienen un componente de hora.
java.util.Date O java.sql.Timestamp tiene ambos componentes de Fecha/Hora, ¡así que toInstant() funciona!
Puedes hacer esto:
// Time is 00:00:00.000
new java.util.Date(sqlDate.getTime()).toInstant()
Actualizado:
Instant.ofEpochMilli(sqlDate.getTime());
// OR
new java.util.Date(sqlDate.getTime()).toInstant();
Devolverá el mismo resultado porque toInstant() llama a Instant.ofEpochMilli(getTime()) internamente.
public Instant toInstant()
return Instant.ofEpochMilli(getTime());
Comentarios y calificaciones
Si posees alguna vacilación y capacidad de ascender nuestro enunciado puedes añadir una interpretación y con gusto lo leeremos.