Saltar al contenido

UnsupportedOperationException – ¿Por qué no puede llamar a Instant() en una java.sql.Date?

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *