Provided by: manpages-es_1.55-10_all bug

NOMBRE

       gettimeofday, settimeofday - pone u obtiene la hora

SINOPSIS

       #include <sys/time.h>

       int gettimeofday(struct timeval *tv, struct timezone *tz);
       int settimeofday(const struct timeval *tv , const struct timezone *tz);

DESCRIPCIÓN

       Las  funciones  gettimeofday  y settimeofday pueden obtener y poner tanto la hora como una
       zona horaria.  El argumento tv es una  estructura  timeval,  tal  como  se  especifica  en
       /usr/include/sys/time.h:

       struct timeval {
               long    tv_sec;         /* segundos */
               long    tv_usec;        /* microsegundos */
       };

       y da el númer de segundos y microsegundos desde la Época (véase time(2)).  El argumento tz
       es una estructura timezone :

       struct timezone {
               int   tz_minuteswest; /* minutos al O de Greenwich */
               int   tz_dsttime;     /* tipo de correción horaria invierno/verano */
       };

       El uso de la estructura timezone es obsoleto; el campo tz_dsttime nunca ha sido  utilizado
       en  Linux - no lo ha sido y nunca será soportado por libc o glibc. Todas y cada una de las
       ocurrencias de este campo en el fuente del núcleo (distintas de  la  declaración)  son  un
       fallo. Por tanto, lo siguiente es puramente de interés histórico.

       El  campo  tz_dsttime  contiene una constante simbólica (los valores se dan más abajo) que
       indica en qué parte del año la `correción horaria invierno/verano' (Daylight Saving  Time,
       DST, también conocida como `horario de ahorro energético') está en vigor.  (Nota: su valor
       es constante a lo largo del año - no indica si DST está o no en vigor, sólo selecciona  un
       algoritmo).  Los algoritmos de corrección horaria invierno/verano se definen como sigue:

        DST_NONE       /* no hay */
        DST_USA        /* estilo EE.UU. */
        DST_AUST       /* estilo australiano */
        DST_WET        /* como en Europa Occidental */
        DST_MET        /* como en Europa Central */
        DST_EET        /* como en Europa del Este */
        DST_CAN        /* Canadá */
        DST_GB         /* Gran Bretaña e Irlanda */
        DST_RUM        /* Rumanía */
        DST_TUR        /* Turquía */
        DST_AUSTALT    /* est. australiano con cambio en 1986 */

       Naturalmente,  resultó  ser que el periodo en el que la corrección horaria invierno/verano
       está en vigor no se podía dar mediante un simple algoritmo, uno por país: de  hecho,  este
       periodo  se  determina  por  decisiones políticas impredecibles. Por tanto, este método de
       representación de las zonas horarias se ha  abandonado.  Bajo  Linux,  en  una  llamada  a
       settimeofday el campo tz_dsttime debe ser cero.

       Bajo  Linux  hay algunas semánticas de `Warp clock' peculariares asociadas a la llamada al
       sistema settimeofday si en la primera llamada de todas (después del arranque) que tenga un
       argumento tz no NULL, el argumento tv es NULL y el campo tz_minuteswest es no cero. En tal
       caso, se asume que el reloj CMOS está en el horario local y que tiene que ser incrementado
       en  esta  cantidad  para  obtener  el  horario del sistema UTC. No cabe duda que usar esta
       característica es una mala idea.

       Para operar sobre la estructura timeval se definen las siguientes macros:
       #define timerisset(tvp)\
               ((tvp)->tv_sec || (tvp)->tv_usec)
       #define timercmp(tvp, uvp, cmp)\
               ((tvp)->tv_sec cmp (uvp)->tv_sec ||\
               (tvp)->tv_sec == (uvp)->tv_sec &&\
               (tvp)->tv_usec cmp (uvp)->tv_usec)
       #define timerclear(tvp)\
               ((tvp)->tv_sec = (tvp)->tv_usec = 0)

       Si tv o tz es nulo, la estructura correspondiente no se ajusta ni se devuelve.

       Solamente el super-usuario puede emplear settimeofday.

VALOR DEVUELTO

       gettimeofday y settimeofday devuelven 0 en caso de éxito ó -1 si ocurre un fallo (en  cuyo
       caso errno toma un valor apropiado).

ERRORES

       EPERM  Alguien que no es el super-usuario ha llamado a settimeofday

       EINVAL La zona horaria (o algo más) es inválida.

       EFAULT Uno de tv o tz apuntaba afuera de su espacio de direcciones accesible.

CONFORME A

       SVr4, BSD 4.3

VÉASE TAMBIÉN

       date(1), adjtimex(2), time(2), ctime(3), ftime(3)