Estoy ejecutando una aplicación Tomcat, y necesito mostrar algunos valores de tiempo. Desafortunadamente, llega el momento de una hora de descanso. La miré a ella y descubrí que mi zona horaria por defecto se establece en:Java Time Zone está en mal estado
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 también se indica cuando intento imprimir el huso horario predeterminado display name, y aparece "GMT-08: 00", lo que parece indicarme que no está configurado correctamente en la zona horaria del Pacífico de los EE. UU. Me estoy ejecutando en Ubuntu Hardy Heron, actualizado de Gutsy Gibbon.
¿Existe algún archivo de configuración que pueda actualizar para decirle al JRE que use Pacific con toda la información asociada al horario de verano? La hora en mi máquina se muestra correctamente, por lo que no parece ser una configuración incorrecta en todo el sistema operativo.
Ok, aquí está una actualización. Un compañero de trabajo sugirió que actualice JAVA_OPTS en mi/etc/profile para incluir "-Duser.timezone = US/Pacific", que funcionó (también vi CATALINA_OPTS, que también actualicé). En realidad, acabo de exportar el cambio a las variables en lugar de usar el nuevo/etc/profile (un reinicio posterior recogerá los cambios y seré dorado).
Sin embargo, sigo pensando que hay una mejor solución ... debería haber una configuración para Java en alguna parte que diga qué zona horaria está usando, o cómo está agarrando la zona horaria. Si alguien conoce este tipo de configuración, sería increíble, pero por ahora esta es una solución decente.
estoy usando 1.5, y es sin duda un problema el horario de verano. Como puede ver, la zona horaria está configurada para no usar el horario de verano. Mi creencia es que se establece genéricamente en -8 desplazamiento en lugar de la zona horaria específica del Pacífico. Dado que el desplazamiento genérico -8 no tiene información de ahorro de luz diurna, por supuesto no lo está usando, pero la pregunta es, ¿dónde le digo a Java que use la zona horaria del Pacífico cuando se inicie? NO estoy buscando una solución programática, debería ser una solución de configuración.
+1: Acabo de toparme con esto en un servidor Ubuntu 9.10 completamente actualizado. Sun JDK 1.6.0_15-b03, el sistema está configurado en el momento de la instalación para la zona horaria de EE. UU./Este./etc/localtime contiene los contenidos idénticos de/usr/share/zoneinfo/US/Eastern. Java produce resultados incorrectos para las fechas entre el 15 de marzo de 2010 y el 25 de abril. Después de reemplazar el archivo con un enlace simbólico a/usr/share/zoneinfo/US/Eastern, ahora obtengo los resultados correctos. Estoy sorprendido de que este error a) aún abierto, b) afecte a un servidor Ubuntu completamente actualizado (9.10 - Karmic). –
El error se observó como cerrado en Java versión 7 (b72). – Raedwald
Cambiar/etc/localtime a un enlace simbólico; es posible que esperes romper cosas en sistemas Linux más modernos (por ejemplo, cuando los paquetes se actualizan o posiblemente al inicio). Sospecho que la razón para cambiar de un enlace simbólico a una copia de un archivo tendría que ver con la secuencia de inicio y las dependencias (particularmente si/usr/está en un sistema de archivos diferente). Me resulta más útil establecer la variable de entorno TZ –