Tengo un problema al guardar los valores de API de fecha Java8 en la base de datos MongoDB. Cada vez que se guarda una nueva instancia de LocalDate (LocalDate.now()), como resultado obtenemos valor con la fecha de ayer con la hora establecida a las 23:00 p. m. Ejemplo:
dt.getDate().toString()me está dando "2017-03-17"
pero cuando miro en la base de datos tengo un valor como este:
"dt" : ISODate("2017-03-16T23:00:00.000Z")Mi zona horaria es UTC+01:00
MongoDB guarda la fecha en hora UTC.
LocalTime es la hora de su reloj de pared.
Cuando lo pasa a MongoDb, Spring convertirá LocalTime a Instant (hora UTC) usando su Zona del sistema.
Considerar
LocalDateTime localDateTime = LocalDateTime.parse("2017-03-17T00:00:00")Algo así sucede
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();Aquí es donde su hora local se cambia a UTC instantánea aplicando una compensación (+01:00) desde su hora local.
Output(in UTC) : 2017-03-16T23:00:00.000Z