Cambio huso horario Venezuela 2016

El presente instructivo tiene como finalidad explicar los pasos necesarios para la actualización del registro del Huso Horario en computador con sistema operativo basado en GNU/Linux.
Éste cambio es obligatorio para todos los computadores de Venezuela, para dar cumplimiento al decreto presidencia Nro 2.301, publicado Gaceta Oficial Extraordinaria N° 6.224, de fecha 18/04/2016, donde se se modifica el Huso Horario en todo el territorio de la República, entrando en vigencia el 01 de mayo de 2016. En pocas palabras, el Huso Horario que rige a Venezuela pasa de (-04:30 UTC) a (-04:00 UTC).

Aspectos Importantes:
– Cambio Hora legal: de (-04:30 UTC) pasa a (-04:00 UTC)
– Variación de la Hora legal actual: (+30 minutos)
– Fecha entrada en vigencia del cambio: (01/05/2016)
– Hora entrada en vigencia del cambio: (02:30 a.m.)

En resumen, el día domingo 01 de mayo del 2016 a las 2:30am, todos los computadores de forma automática deben incrementar 30 minutos la hora (03:00am) y cambiar el uso horario a (UTC -04:00)

Configuración:

Actualmente ya existe una actualización del paquete tzdata (al menos en las distribución debian y ubuntu) con los cambios del nuevo huso horario para Venezuela, dicho paquete puede ser descargado de los siguientes enlaces: Debian Package tzdata, en el caso de Ubuntu: tzdata 2016d-0ubuntu0.16.04

Para el caso de debian podemos verificar Debian Changelog donde nos indica los últimos cambios correpondiente al paquete y hace referencia a la resolúcion del bug reportado 821147 Venezuela to change time zone on May 1:

tzdata (2016d-0+deb8u1) stable; urgency=medium

* New upstream version, affecting the following future time stamps:
– America/Caracas. Closes: #821147.
– Asia/Magadan
– Asia/Tomsk (new timezone).
* Update translations from the sid package.

— Aurelien Jarno Fri, 22 Apr 2016 15:32:01 +0200

En nuestro caso, la configuración se efectuará en un computador con Debian 8.0:

1. Verificamos la zona horaria instalada actualmente:

root@server:/tmp# zdump -v /etc/localtime
 ......
 /etc/localtime  Sun Dec  9 06:59:59 2007 UT = Sun Dec  9 02:59:59 2007 VET isdst=0 gmtoff=-14400
 /etc/localtime  Sun Dec  9 07:00:00 2007 UT = Sun Dec  9 02:30:00 2007 VET isdst=0 gmtoff=-16200
 /etc/localtime  9223372036854689407 = NULL
 /etc/localtime  9223372036854775807 = NULL
 

Nota: al visualizar las últimas lineas, verificamos que los cambios actuales corresponden al 09/12/2007, donde a las 2:59:59, se le restó 30 minutos a la hora legal.

 /etc/localtime  Sun Dec  9 06:59:59 2007 UT = Sun Dec  9 02:59:59 2007 VET isdst=0 gmtoff=-14400
 /etc/localtime  Sun Dec  9 07:00:00 2007 UT = Sun Dec  9 02:30:00 2007 VET isdst=0 gmtoff=-16200
 

2. Descargar paquete debian:
Versión Debian jessie 8.0 (tzdata_2016d-0)

root@server:/tmp# wget -c http://ftp.us.debian.org/debian/pool/main/t/tzdata/tzdata_2016d-0+deb8u1_all.deb

Versión Debian Sid (última versión del paquete tzdata_2016d-2):

root@server:/tmp# wget -c http://ftp.us.debian.org/debian/pool/main/t/tzdata/tzdata_2016d-2_all.deb

Nota: En caso de tener JAVA instalado, se hace necesario instalar tzdata-java, pero la versión 2016d-2 aún no se encuentra disponible (27/04/2016 – 12:27pm), por lo que se recomienda instalar el paquete de tzdata versión 2016d-0+deb8u1, así podrá instalar el tzdata-java versión 2016d-0+deb8u1

3. Instalamos el paquete descargado:

root@server:/tmp# dpkg -i tzdata_2016d-2_all.deb
 (Leyendo la base de datos ... 35276 ficheros o directorios instalados actualmente.)
 Preparando para reemplazar tzdata 2014h-0wheezy1 (usando tzdata_2016d-2_all.deb) ...
 Desempaquetando el reemplazo de tzdata ...
 Configurando tzdata (2016d-2) ...

 Current default time zone: 'America/Caracas'
 Local time is now:      Mon Apr 25 09:48:07 VET 2016.
 Universal Time is now:  Mon Apr 25 14:18:07 UTC 2016.
 Run 'dpkg-reconfigure tzdata' if you wish to change it.
 

4. verificamos el paquete instalado:

root@server:~# zdump -v /etc/localtime
 
 ......
 /etc/localtime  Sun May  1 06:59:59 2016 UT = Sun May  1 02:29:59 2016 VET isdst=0 gmtoff=-16200
 /etc/localtime  Sun May  1 07:00:00 2016 UT = Sun May  1 03:00:00 2016 VET isdst=0 gmtoff=-14400
 /etc/localtime  9223372036854689407 = NULL
 /etc/localtime  9223372036854775807 = NULL
 

Nota: al visualizar las últimas lineas, verificamos que ultimos cambios corresponden al 01/05/2016, donde a las 2:29:59, se incrementará 30 minutos a la hora legal.

5. Sincronizar la hora del hardware (computador) con la hora del sistema

root@server:/tmp# hwclock --systohc --utc

donde:
–systohc -> coloca el reloj físico la hora del sistema
–utc -> mantiene el reloj físico en UTC (*)
(*)Linux utiliza el estándar UTC sobre el estándar localtime

6. Verificamos el cambio:

root@server:/tmp# timedatectl status
      Local time: lun 2016-04-25 11:54:56 VET
  Universal time: lun 2016-04-25 16:24:56 UTC
        RTC time: lun 2016-04-25 16:24:56
       Time zone: America/Caracas (VET, -0430)
 Network time on: yes
NTP synchronized: no
 RTC in local TZ: no
 

Pruebas:
Para efectuar una prueba, podemos cambiar la fecha y hora actual del sistema y llevarla a la fecha 01/05/2016, hora 2:29:50am, esperamos 10 segundo y verificamos el cambio

1. Cambiar fecha y hora al sistema:

root@server:/tmp# date --set "2016-05-01 02:29:50"

2. Verificar cambio a los 10 segundos:

root@server:/etc# timedatectl status
      Local time: dom 2016-05-01 03:00:00 VET
  Universal time: dom 2016-05-01 07:00:00 UTC
        RTC time: lun 2016-04-25 16:29:45
       Time zone: America/Caracas (VET, -0400)
 Network time on: yes
NTP synchronized: no
 RTC in local TZ: no
 

Nota: se puede apreciar en el campo “Local Time” que hubo un adelanto de 30 minutos, pasó de 2:30:00 a 03:00:00, de igual manera el campo “Time Zone”, cambió de America/Caracas (VET, -0430) a America/Caracas (VET, -0400)

Comandos Adicionales:
1. Verificar la zona horaria actual del computador:

root@server:/tmp# cat /etc/timezone
America/Caracas

2. Verificar la hora actual:

root@server:/tmp# date
lun abr 25 09:43:32 VET 2016

3. Reconfigurar la Zona Horaria del sistema:

root@server:/tmp# dpkg-reconfigure tzdata

NTP

Existen herramientas para mejorar la precisión del reloj del computador y mantener sincronicado la hora en el sistema:

Network Time Protocol (NTP) es un protocolo de Internet para sincronizar los relojes de los sistemas informáticos a través del enrutamiento de paquetes en redes con latencia variable. NTP utiliza UDP como su capa de transporte, usando el puerto 123. Está diseñado para resistir los efectos de la latencia variable.

Notas Importantes
1.- NTP permite “sincronizar la hora”, “NO permite cambiar el huso horario de los equipos”, la sincronización dependerá del huso horario configurado

2.- Algunas aplicaciones (como PHP) tienen los ajustes de la zona horaria por separado del sistema operativo, manteniendo su propia base de datos de zona horaria timezonedb, la cual está basada en la “Time Zone Database”, mantenida por Internet Assigned Numbers Authority (IANA) Time Zones IANA, es importante revisar si la zona horaria de PHP depende del sistema operativo o se encuentra separada.

3.- En el caso de tener JAVA instalado, se hace necesario instalar el paquete tzdata-java-2016d, en los repositorios de debian se puede descargar en el siguiente enlace: Package tzdata-java

4.- En caso de tener servicios instalados, WEB (apache), BD (postgres), entre otros, es importantes reiniciarlos para que en caso de que la Zona Horaria dependa del Sistema Operativo, los cambios surtan efecto.

Enlaces:
gaceta-oficial-el-cambio-de-horario-en-venezuela-desde-el-primero-de-mayo
Cambio de Huso Horario en Venezuela
Time (Español)
Time Zones IANA
Que es la Zona Horaria
PHP y las zonas horarias

Anuncios

13 comentarios en “Cambio huso horario Venezuela 2016

    • Si, pero cuando escribí la entrada, aún los paquetes de jessie-update no estaban disponible, sólo sid. pero siempre hay opciones, compilar el fuente de IANA, modificar el tzdata, …. y es lo realmente interesante, tener muchas opciones a la hora de resolver un problema y no que las opciones, se conviertan en problemas.

  1. Una acotación…

    Para los que estén usando Java 8, actualizar tzdata-java no les servirá: a partir de OpenJDK8 la información de las zonas horarias pasa a estar localizada en el archivo tzdb.dat, ubicado en el directorio lib dentro de la ruta raiz del JRE (en el caso de openjdk-8-jre-headless instalado desde el repositorio de backports para Debian Jessie seria /usr/lib/jvm/java-8-openjdk-amd64/jre/lib para la version de 64 bits). Por razones técnicas, en Debian se optó por dejarlo así en vez de separar este archivo en un paquete aparte (!!!), por lo que solo hay dos formas de actualizarlo:

    – Actualizar el JRE/JDK completo. En el caso de Debian Jessie no parece ser una opción viable dada la naturaleza del repositorio backports: las actualizaciones son menos frecuentes, y podrian pasar meses hasta que aparezca un OpenJDK con la actualización relevante ahi
    – Usar la alternativa de Oracle: el Timezone Updater: http://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html – por esa vía decidí irme

    En el caso de usar Timezone Updater, basta con ejecutar este comando:
    sudo java -jar tzupdater.jar -l http://www.iana.org/time-zones/repository/releases/tzdata2016d.tar.gz
    (si, se necesitan privilegios de root, y debes cerrar TODAS las instancias de la JVM activas para poder realizar la actualización de zonas horarias)

    • para los que usan suse cambiaense a una distro que preste atencion a sus paquetes como debian que en seguridad es la mas al dia y la mas eficiente

  2. Para GNU/Linux 64 pueden hacerlo manual.
    Metodo 1: /etc/localtime
    # ls -l /etc/localtime*
    -rw-r–r– 1 root root 240 sep 19 2015 /etc/localtime
    # cat /etc/localtime
    VET4:30
    # mv /etc/localtime /etc/localtime.old
    # cd /tmp
    # wget http://ftp.debian.org/debian/pool/main/t/tzdata/tzdata_2016d-2_all.deb
    # ar -x tzdata_2016d-2_all.deb
    # tar -xvJf data.tar.xz
    # ls -ld usr/
    # cat usr/share/zoneinfo/America/Caracas
    VET4
    # mv Caracas /usr/share/zoneinfo/America/Caracas
    # ln -s /usr/share/zoneinfo/America/Caracas /etc/localtime
    # date -u
    mié may 11 00:29:02 UTC 2016
    # date
    mar may 10 20:29:04 VET 2016

  3. Disculpe hay un error en esta linea
    # mv Caracas /usr/share/zoneinfo/America/Caracas
    es así;
    # mv usr/share/zoneinfo/America/Caracas /usr/share/zoneinfo/America/Caracas

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s