Pregunta

Estoy ejecutando una de aplicaciones Tomcat, y tengo que mostrar algunos de los valores de tiempo.Por desgracia, el tiempo está llegando hasta una hora.Me puse a investigar y descubrí que mi zona Horaria por defecto se establece en:

sun.util.calendar.ZoneInfo[id="GMT-08:00",
                           offset=-28800000,
                           dstSavings=0,
                           useDaylight=false,
                           transitions=0,
                           lastRule=null]

En lugar de la zona horaria del Pacífico.Esto se indica cuando trato de imprimir el valor predeterminado de tiempo de la zona nombre para mostrar, y se trata de "GMT-08:00", lo que parece indicar que para mí que no está correctamente configurado para el Pacífico de los estados unidos de zona horaria.Estoy corriendo en Ubuntu Hardy Heron, actualizado de Gutsy Gibbon.

Hay un archivo de configuración que puedo actualizar a decir la JRE para el uso Pacífico con todos los asociados horario de ahorro de luz de la información?El tiempo en mi máquina se muestra correctamente, por lo que no parece ser un sistema operativo-gran error de configuración.


Ok, aquí está una actualización.Un compañero de trabajo me sugirió la actualización JAVA_OPTS en mi /etc/profile para incluir "-Duser.timezone=NOSOTROS/Pacífico", que trabajó (también vi CATALINA_OPTS, que me actualiza).En realidad, yo sólo exporta el cambio en las variables, en lugar de utilizar el nuevo /etc/profile (reiniciar más tarde recogerá los cambios y me va a ser de oro).

Sin embargo, todavía creo que hay una solución mejor...debe haber una configuración de Java en alguna parte que dice lo de la zona horaria que está utilizando, o cómo es el acaparamiento de la zona horaria.Si alguien sabe de un escenario, que sería impresionante, pero por ahora esta es una solución decente.


Estoy usando 1.5, y es definitivamente un horario de verano problema.Como se puede ver, se establece la zona horaria a no usar el horario de verano.Mi creencia es que genéricamente se establece a -8 desplazamiento en lugar de la específica de la zona horaria del Pacífico.Desde el genérico -8 desplazamiento no tiene horario de ahorro de info, por supuesto no lo uso, pero la pregunta es, ¿dónde puedo decirle a Java para utilizar la zona horaria del Pacífico cuando se inicia?Yo NO estoy buscando una solución de programación, debe ser una solución de configuración.

¿Fue útil?

Solución

Se trata de un "capricho" en la forma en que la JVM busca la zoneinfo archivo.Ver ID del error 6456628.

La solución más sencilla es hacer /etc/localtime un enlace a la correcta zoneinfo archivo.Para la hora del Pacífico, los siguientes comandos deben trabajar:

# sudo cp /etc/localtime /etc/localtime.dist
# sudo ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

No he tenido ningún problema con el enlace simbólico enfoque.

Editar:Agregó que "sudo" para los comandos.

Otros consejos

En Ubuntu, no es suficiente con sólo cambiar el archivo /etc/localtime.Parece que para leer el archivo /etc/timezone, demasiado.Es mejor seguir el la instrucción para establecer la zona horaria correcta.En particular, las siguientes:

$ sudo cp /etc/timezone /etc/timezone.dist
$ echo "Australia/Adelaide" | sudo tee /etc/timezone
Australia/Adelaide
$ sudo dpkg-reconfigure --frontend noninteractive tzdata

Current default time zone: 'Australia/Adelaide'
Local time is now:      Sat May  8 21:19:24 CST 2010.
Universal Time is now:  Sat May  8 11:49:24 UTC 2010.

En mi Ubuntu, si /etc/localtime y /etc/timezone son inconsistentes, Java parece leer zona horaria predeterminada de /etc/timezone .

Yo tenía un problema similar, posiblemente de la misma.Sin embargo, mi tomcat server se ejecuta en un cuadro de windows por lo que el enlace simbólico solución no funcionará.

Me puse -Duser.timezone=Australia/Sydney en el JAVA_OPTS sin embargo tomcat no reconocer que el horario de verano fue en efecto.Como solución he cambiado Australia/Sydney (GMT+10:00) Pacific/Numea (GMT+11:00), de modo que los tiempos se muestran correctamente sin embargo me gustaría saber la solución real o error, si los hubiere.

Puede ayudar a verificar la zona de las reglas de su sistema operativo está utilizando.

/usr/bin/zdump -v /etc/localtime | less

Este archivo debe contener el ahorro de la luz del las normas, como este para el año 2080:

/etc/localtime  Sun Mar 31 01:00:00 2080 UTC = Sun Mar 31 02:00:00 2080 BST isdst=1 gmtoff=3600

Usted puede comparar esto con la zona horaria de reglas que usted piensa que usted debe utilizar.Ellos pueden ser encontrados en /usr/share/zoneinfo/.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top