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)