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'ON

       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  numer  de  segundos  y  microsegundos  desde la Epoca (vease
       time(2)).  El argumento tz es una estructura timezone :

       struct timezone {
               int   tz_minuteswest; /* minutos al O de Greenwich */
               int   tz_dsttime;     /* tipo de correcion 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 sera soportado por
       libc o glibc. Todas y cada una de las ocurrencias de este campo  en  el
       fuente  del  nucleo  (distintas  de  la  declaracion) son un fallo. Por
       tanto, lo siguiente es puramente de interes historico.

       El campo tz_dsttime contiene una constante simbolica  (los  valores  se
       dan  mas  abajo)  que indica en que parte del ano la `correcion horaria
       invierno/verano' (Daylight Saving  Time,  DST,  tambien  conocida  como
       `horario  de  ahorro  energetico')  esta  en vigor.  (Nota: su valor es
       constante a lo largo del ano - no indica si DST esta  o  no  en  vigor,
       solo  selecciona  un  algoritmo).  Los algoritmos de correccion 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        /* Canada */
        DST_GB         /* Gran Bretana e Irlanda */
        DST_RUM        /* Rumania */
        DST_TUR        /* Turquia */
        DST_AUSTALT    /* est. australiano con cambio en 1986 */

       Naturalmente, resulto ser que  el  periodo  en  el  que  la  correccion
       horaria  invierno/verano  esta  en  vigor  no  se podia dar mediante un
       simple algoritmo, uno por pais: de hecho, este periodo se determina por
       decisiones   politicas   impredecibles.   Por  tanto,  este  metodo  de
       representacion 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  semanticas  de  `Warp  clock'  peculariares
       asociadas a la llamada al sistema settimeofday si en la primera llamada
       de  todas  (despues 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 esta 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 caracteristica 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 exito o -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 mas) es invalida.

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

CONFORME A

       SVr4, BSD 4.3

V'EASE TAMBI'EN

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