diferencia horaria en reportes jasper

Buen dia.

Hemos notado que los reportes Jasper, por ejemplo el acta de examen, la funcion new java.util.Date() nos da tres horas de diferencia con la hora actual, el sistema tiene bien la hora. Antes nos pasaba que la hora del sistema estaba mal y lo que pasaba era que teniamos mal en el postgres.conf la configuración, eso lo arreglamos y ahora sale bien, pero ahora vemos que los reportes jasper tienen diferencia horaria. De donde saca ese dato?

Gracias!

Buenos días, podrías probar si esto te devuelve bien la fecha y la hora que necesitas.

new SimpleDateFormat("dd-MM-yyyy").format(new Date())

Saludos

Buen dia José, eso que me mandas saca solametne fecha no la hora. No puedo corroborar.

Si perdón me comí lo que faltaba del comando.

new SimpleDateFormat("dd-MM-yyyy hh:mm:ss").format(new Date())

Podrías también validar cual es el time zone de tu linux con el comando date lo devuelve en el anteúltimo valor.

Saludos

José, disculpame a mi, no me di cuenta que le faltaba la otra parte, me da el mismo dato con la hora mal 06-02-2018 01:34:27,

con el date en consola me sale bien
mar feb 6 10:35:12 -03 2018

Buenas, acá también tienen el mismo problema fijate si con esto se te resuelve.

https://stackoverflow.com/questions/12636568/ireport-how-to-format-date-based-on-french-locale

Saludos.

le cambié la clase pero nop.

Buenas Luciana podrías probar lo siguiente pero ahora pasandole el locale

new SimpleDateFormat("dd-MM-yyyy hh:mm:ss", new Locale("Ar")).format(new Date())

Sino este código.

new SimpleDateFormat("dd-MM-yyyy hh:mm:ss", new Locale("Ar")).format(new Date())



Si te da error proba con comillas simples.
Si eso no te funciona nada de lo anterior proba de ver cuál es el timezone que está trayendo el jasper imprimiendo en un campo esto:

$P{REPORT_TIME_ZONE}

Saludos.

Buen dia, esto es lo que sale con el parametro report time zone, ahi está pero donde lo cambio? Gracias

sun.util.calendar.ZoneInfo[id=“Etc/UTC”,offset=0,dstSavings
=0,useDaylight=false,transitions=0,lastRule=null]

Las otras sentencias no te imprimieron nada?

Hola Luciana,
te comento en principio la diferencia que existe en cuánto a de dónde se toman los datos de fecha y zonas horarias en cada caso.
En cuando a la fecha del sistema Guaraní que mencionás en primer instancia, la misma se obtiene de la base, por lo que dependerá, como bien decís, de cómo tengan configurado el postgresql.conf.
En el caso de los Reportes en Jasper, la situación es diferente si utilizás la previsualización de los mismos en el iReports o si lo estás imprimiendo desde el sistema. Si probaste las expresiones de los anteriores mensajes en el jrxml y usaste el preview en el iReports, lo que veas ahí dependerá de cómo tengas configurado el parámetro REPORT_TIME_ZONE en esta aplicación. Para modificarlo podés entrar a “Herramientas/Opciones/Compilation and execution” y ahí podés configurar Report Locale con el valor español (Argentina) y el Report Time Zone con el valor America/Argentina/Buenos_Aires (Hora de Argentina). Esta configuración servirá sólo para la previsualización de los reportes utilizando el iReports.

Cuando los reportes se imprimen desde Guaraní, esa fecha de java que se muestra en la impresión dependerá de la fecha y zona horaria establecida en el servidor donde se encuentre corriendo Jasper (donde hayas levantado el javabridge). Eso podés comprobarlo y modificarlo, como te mencionaba Jose, con el comando date. Por el resultado que arrojás no estoy segura de que esté bien configurado el timezone, por lo que te pido que intentes establecerlo en la consola del servidor donde levantaron el javabridge, con el siguiente comando:

sudo timedatectl set-timezone "America/Argentina/Buenos_Aires"

Una vez que lo hayan seteado, volvé a ejecutar en esa consola el comando

 date

para asegurarnos de que haya quedado correctamente establecida la fecha y zona horaria en ese servidor, y adjuntanos el resultado.

Gracias y saludos!
Gabriela.

Hola Gabriela

Como vos lo decis en la configuracion del ireport cuando lo corro localmente sale perfecto.

Ahora lo que me llamaba la antención en el servidor es eso que vos decis, cuando corro el date me sale bien la fecha y en el guarani, en el encabezado está bien tambien, ahora el jasper lo toma con tres horas mas, por eso preguntaba de donde sacaba ese dato.

Las otras opciones que me dabas José, salen igual con las tres horas de diferencia.

Muchas gracias a los dos!

Hola Luciana,
ejecutaste el comando para setear el timezone en el servidor donde tenés levantado el javabridge que te pedimos en el mensaje anterior? Nos podés adjuntar el resultado para verificar que se haya modificado correctamente?

Saludos y gracias!
Gabriela.

Ahi va Gabriela.

Quizá tenga que ver con que todo está corriendo con docker?


consola.png

consola.png

Hola Luciana googleando en varios foros encontre este comando para ver como te lo trae luego de ello.
1° mata el proceso que está corriendo el javabridge ( java -jar …)
2° ahora corre el javabridge con este comando

java -Duser.timezone="America/Argentina/Buenos_Aires" -jar $toba_dir/php/3ros/JavaBridge/WEB-INF/lib/JavaBridge.jar SERVLET:8081

3° Probá ahora si la hora te sale bien.

Saludos

Siiiiiii!!!
Mil gracias!!!