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)

Linux 2.0.32                                    10 diciembre 1997                                GETTIMEOFDAY(2)