TZSET(3)

NOMBRE
tzset, tzname, timezone, daylight - inicializa la información de conversión horaria

SINOPSIS
#include <time.h>

void tzset (void);

extern char *tzname[2];
extern long timezone;
extern int daylight;

DESCRIPCIÓN
La función tzset() inicializa la variable tzname a partir de la variable de entorno TZ. Esta función es invocada automáticamente por otras funciones conversoras de tiempo que dependen de la zona horaria. En un entorno de tipo SysV se establecerá también el valor de las variables timezone (segundos al Oeste de GMT) y daylight (0 si la zona horaria no tiene reglas de tiempo sobre ahorro energético, distinto de cero si hay algún período durante el que se apliquen horarios de ahorro energético).

Si la variable TZ no está presente en el entorno, la variable tzname se inicializa con la mejor aproximación de la hora local, tal como se especifica en el fichero /usr/lib/zoneinfo/localtime, cuyo formato se detalla en el fichero de formato tzfile(5) localtime localizado en el directorio de huso horario del sistema (vea más abajo). (También es frecuente que el fichero /etc/localtime usado aquí, sea un enlace simbólico al fichero correcto en el directorio de huso horario del sistema.)

Si la variable TZ está presente en el entorno, pero su valor es NULL o no puede ser interpretado usando ninguno de los formatos especificados abajo, se usa el Tiempo Coordinado Universal (UTC).

La variable TZ puede tener tres formatos. El primero se usa cuando no hay horario de ahorro energético en la zona horaria local:

    nzh desfase

La cadena nzh especifica el nombre de la zona horaria y debe componerse de tres o más caracteres alfabéticos. La cadena desfase sigue inmediatamente después de nzh y especifica el tiempo a añadir a la hora local para obtener el Tiempo Coordinado Universal (UTC). El valor de desfase es positivo si la hora local está al oeste del meridiano de Greenwich y negativo si está al este. La hora debe estar entre 0 y 24, y los minutos y segundos entre 0 y 59.

El segundo formato se usa cuando hay horario de ahorro energético:

    nzh desfase hae [desfase],inicio[/hora],fin[/hora]

No hay espacios en la especificación. El nzh y el desfase iniciales especifican la zona horaria estándar tal como se describe arriba. Las cadenas hae y desfase especifican el nombre y desfase para el correspondiente horario de ahorro energético de la zona. Si se omite el desfase, se asume el valor de una hora por delante de la hora estándar.

El campo inicio especifica cuándo entra en vigor el horario de ahorro energético y el campo fin cuándo se vuelve al horario estándar. Estos campos pueden tener los siguientes formatos:

Jn  Especifica el día juliano, siendo n entre 1 y 365. El 29 de febrero nunca se cuenta, ni siquiera en los años bisiestos.

n   Especifica el día juliano, siendo n entre 1 y 365. El 29 de febrero se cuenta en los años bisiestos.

Mm.s.d
    Especifica el día d (0 <= d <= 6) de la semana s (1 <= s <= 5) del mes m (1 <= m <= 12). La semana 1 es la primera semana en la que ocurre el día d y la semana 5 es la última en el que ocurre el día d. El día 0 es un domingo.

Los campos hora especifican cuándo (en el horario local actualmente en vigor) ocurre el cambio al otro horario. Si se omite, el valor por defecto es 02:00:00.

El tercer formato especifica que la información de la zona horaria debe leerse de un fichero:

    :[fichero]

Si se omite la especificación de fichero, la información de la zona horaria se lee del fichero localtime en el directorio de huso horario del sistema, que actualmente suele ser /usr/share/zoneinfo. Este fichero se encuentra en formato tzfile(5). Si se proporciona fichero, especifica otro fichero de formato tzfile(5) del que leer la información de la zona horaria. Si fichero no comienza con `/', la especificación de fichero es relativa al directorio de huso horario del sistema.

FICHEROS
El directorio de huso horario del sistema utilizado depende de la versión de (g)libc. Libc4 y libc5 usan /usr/lib/zoneinfo y, desde libc-5.4.6, /usr/share/zoneinfo. Glibc2 usará la variable de entorno TZDIR cuando ésta exista. Su valor por defecto depende de cómo fue instalado, pero normalmente es /usr/share/zoneinfo.

Este directorio de huso horario contiene los ficheros
localtime      fichero de huso horario local
posixrules     reglas para TZ's al estilo POSIX

A menudo /etc/localtime es un enlace simbólico al fichero localtime o al fichero de huso horario correcto en el directorio de huso horario del sistema.

CONFORME A
SVID 3, POSIX, BSD 4.3

OBSERVACIONES
Observe que la variable daylight no indica que se apliquen horarios de ahorro energético en el momento. Suele dar el número de algún algoritmo (vea la variable tz_dsttime en gettimeofday(2)). Ha estado obsoleta muchos años pero es requerida por SUSv2.

BSD4.3 tenía una rutina char *timezone(zone,dst) que devolvía el nombre de la zona horaria correspondiente a su primer argumento (minutos al Oeste de GMT). Si el segundo argumento era 0, se usaba el nombre estándar y, en caso contrario, la versión de tiempo de ahorro energético.

VÉASE TAMBIÉN
date(1), gettimeofday(2), time(2), ctime(3), getenv(3), tzfile(5)