Actualizar información de zona horaria en Java
A nuestras queridas autoridades del Gobierno de Chile se les ocurrió que era muy aburrido mantener una zona horaria durante todo el año en Chile, por lo que decidieron una vez más jugar con el reloj. Este hecho ha sido reconocido internacionalmente, lo que obviamente nos llena de orgullo .
Bromas aparte, el tema es bastante complejo para los que administramos sistemas y servidores. En particular, las aplicaciones Java en Linux (y supongo que en Windows también) tienen la desagradable costumbre de no tomar en cuenta la información de zona horaria provista por el sistema, sino que utilizan su propia base de datos de tzdata. Peor aún: a día de hoy, la última actualización de Oracle Java (8u91) no incorpora la información del cambio de hora en Chile. Y la herramienta tzupdater que Oracle provee para actualizar esta información dentro de Java no ha sido actualizada desde el 2015. Como resultado, es probable que hoy muchas aplicaciones Java en Chile estén "dando la hora".
Afortunadamente, es posible indicarle a tzupdater que descargue la información de zonas horarias directamente desde IANA y la guarde en la base de datos interna de Java, con lo que podremos asegurarnos de que esté completamente actualizada. El procedimiento es el siguiente:
Luego se deben reiniciar las aplicaciones Java para que el cambio se vea reflejado en ellas.
Para verificar que Java está correctamente actualizado, se puede crear este simple programa que imprime la hora por consola (extraído de StackOverflow):
import java.util.Date;
Guárdalo en un archivo llamado Dte.java, y luego compílalo y ejecútalo de esta manera:
javac Dte.java
java Dte
El resultado debería ser similar a lo que se ve en esta imagen:
Referencia: http://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html
Bromas aparte, el tema es bastante complejo para los que administramos sistemas y servidores. En particular, las aplicaciones Java en Linux (y supongo que en Windows también) tienen la desagradable costumbre de no tomar en cuenta la información de zona horaria provista por el sistema, sino que utilizan su propia base de datos de tzdata. Peor aún: a día de hoy, la última actualización de Oracle Java (8u91) no incorpora la información del cambio de hora en Chile. Y la herramienta tzupdater que Oracle provee para actualizar esta información dentro de Java no ha sido actualizada desde el 2015. Como resultado, es probable que hoy muchas aplicaciones Java en Chile estén "dando la hora".
Afortunadamente, es posible indicarle a tzupdater que descargue la información de zonas horarias directamente desde IANA y la guarde en la base de datos interna de Java, con lo que podremos asegurarnos de que esté completamente actualizada. El procedimiento es el siguiente:
- Descargar la herramienta tzupdater desde http://www.oracle.com/technetwork/java/javase/downloads/index.html (sección "Java Time Zone Updater Tool") y descomprimirla (unzip tzupdater.zip).
- Ingresar al directorio recién creado (cd tzupdater-*).
- Ejecutar (como root o con sudo): java -jar tzupdater.jar -l http://www.iana.org/time-zones/repository/tzdata-latest.tar.gz
Luego se deben reiniciar las aplicaciones Java para que el cambio se vea reflejado en ellas.
Para verificar que Java está correctamente actualizado, se puede crear este simple programa que imprime la hora por consola (extraído de StackOverflow):
import java.util.Date;
public class Dte {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date.toString());
}
}
Guárdalo en un archivo llamado Dte.java, y luego compílalo y ejecútalo de esta manera:
javac Dte.java
java Dte
El resultado debería ser similar a lo que se ve en esta imagen:
Referencia: http://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html
Comentarios
Te dejo mi correo electronico para cualquier cosa abarzuadeyanira@gmail.com espero que podamos coordinar alguna entrevista. ¡Muchos saludos!