TimeZone no muestra

Estoy usando IntelliJ para mi progtwig (estoy usando el lenguaje Kotlin y Java), estoy tratando de get un informe de time utilizando la consulta de mi database y la envío al browser (estoy usando Postman para ver el resultado). Cuando depuro mi código y reviso el resultado de la consulta, la zona horaria parece estar bien 'como yo quiero, incluso muestra -7 (el time de diferencia entre el UTC y yo) pero cuando se trata del browser (Cartero ) mostrando la hora UTC y +0000, por ejemplo ("date": "2017-10-12T15: 00: 33,000 + 0000" en lugar de "date": "2017-10-12T15: 00: 33,000 + 0007"). Intenté muchas opciones y desperdicié alnetworkingedor de 6 horas para encontrar la solución pero nada funciona. Gracias por la ayuda

Postgres almacena un TIMESTAMP WITH TIME ZONE en UTC , descartando la zona pasada después de usarla para hacer el ajuste en UTC. Tenga en count que este es el comportamiento específico de Postgres: las bases de datos varían ampliamente en su event handling date y hora, y la especificación de SQL apenas toca el tema.

Como comentó Marlowe, si necesita recordar la zona horaria capturada a partir de la input de datos, deberá almacenarla en otra columna. Capture un nombre de zona horaria adecuada en el formatting de continent/region , como America/Montreal , Africa/Casablanca o Pacific/Auckland . Nunca utilice la abreviatura de 3-4 letras, como EST o IST ya que no son zonas horarias verdaderas, no están estandarizadas y ni siquiera son únicas (!).

➠ Aquí está el problema: una session de Postgres en una herramienta interactiva como pgAdmin aplica dinámicamente una zona horaria pnetworkingeterminada después de recuperar el valor UTC. Si bien es una buena intención, esta es una característica anti-function en mi opinión, ya que oculta la verdadera naturaleza de los datos almacenados.

Obtenga el valor en UTC utilizando las modernas classs java.time.

 Instant instant = myResultSet.getObject( … , Instant.class ) ; 

Ajústalo a tu zona horaria deseada.

 ZoneId z = ZoneId.of( "Asia/Kolkata" ) ; ZonedDateTime zdt = instant.atZone( z ) ; 

Genere una cadena para el browser web utilizando la class DateTimeFormatter . Tenga en count las características de localización automática allí.

Todo esto ha sido cubierto muchas veces en Stack Overflow. Busque para aprender más

Solución: así que encontré la solución a mi problema aquí: Anulando BeanPropertyRowMapper para soportar JodaTime DateTime

en breve, el tipo de timestamp no funciona bien con la zona horaria, así que lo cambié a DateTime en Joda y envolví el resultado de la consulta por Costumed Bean (del enlace que publiqué)

  • Cómo llamar a una function de postgres con una matriz de tipo compuesto