C/time.h

En Galilibros, o Wikibooks en galego.
< C
C
← Volver a tgmath.h time.h Seguir con wchar.h


Este ficheiro de cabeceira permite o uso dalgunhas funcións que traballan con datas e horas: acceso estándar, manipulación e aplicación de formato. Pode incluírse nun código fonte mediante a seguinte directriz:

#include <time.h>

Funcións[editar]

asctime[editar]

A función ten o seguinte prototipo:

char *asctime(const struct tm* tmptr);

Permite converter tmptr nunha cadea no formato "[día da semana] [mes] [día do mes] [horas]:[minutos]:[segundos] [ano]", onde o día da semana vai escrito en tres letras ─a primeira maiúscula─, o mes vai escrito en tres letras ─a primeira en maiúscula─ e o resto van en formato numérico. A cadea de caracteres vai seguida dun salto de liña e dun carácter nulo, o que fai un total de 26 caracteres. A cadea sinalada está aloxada en memoria de maneira estática e compártese con outra función, ctime, o que significa que o valor da cadea substitúese ao chamar a calquera das dúas funcións.

clock[editar]

A función ten o seguinte prototipo:

clock_t clock(void);

Devolve a cantidade de “golpes” de reloxo que houbo dende o inicio do programa.

ctime[editar]

A función ten o seguinte prototipo:

char* ctime(const time_t* timer)

Permite converter timer nunha cadea no mesmo formato que en asctime. A cadea sinalada está aloxada en memoria de maneira estática e compártese con asctime, o que significa que o valor da cadea substitúese ao chamar a calquera das dúas funcións. Ademais, ctime utiliza de maneira interna o mesmo búfer que utilizan gmtime e localtime como valor a devolver, así que unha chamada a esta funcións substituiríao.

difftime[editar]

A función ten o seguinte prototipo:

double difftime(time_t timer2, time_t timer1)

Devolve a diferencia en segundos entre as dúas datas.

gmtime[editar]

A función ten o seguinte prototipo:

struct tm* gmtime(const time_t* timer)

Converte un valor de tipo time_t (timer) nunha estrutura de tipo tm como data UTC. A estrutura está aloxada en memoria de maneira estática e compártena as funcións ctime, gmtime e localtime, o que significa que o seu valor substitúese ao chamar a calquera das funcións.

gmtime_r[editar]

A función ten o seguinte prototipo:

struct tm* gmtime_r(const time_t* timer, struct tm* result)

Converte un valor de tipo time_t (timer) nunha estrutura de tipo tm como data UTC. A data almacénase na estrutura de tipo tm á que fai referencia result. Esta é unha versión de gmtime preparada para a programación “de varios fíos”.

localtime[editar]

A función ten o seguinte prototipo:

struct tm* localtime(const time_t* timer)

Converte un valor de tipo time_t (timer) nunha estrutura de tipo tm como data local (hora no fuso horario e hemisferio correspondente). A estrutura está aloxada en memoria de maneira estática e compártena as funcións ctime, gmtime e localtime, o que significa que o seu valor substitúese ao chamar a calquera das funcións.

mktime[editar]

A función ten o seguinte prototipo:

time_t mktime(struct tm* ptm)

Converte ptm nun valor de tipo time_t. Ademais comproba os membros de ptm, axuntando os valores en caso de que estes non estean nun rango posible, incompletos ou incorrectos, e a continuación transforma a estrutura nun valor te tipo time_t, que é o que devolve a función. Os valores orixinais dos membros tm_wday (o día da semana) e tm_yday (o día do ano) de ptm ignóranse e énchense cos valores correspondentes calculados a partires da data. O rango de tm_mday (o día do mes) non se comproba ata determinar tm_mon (o mes) e tm_year (o ano). En caso de houber algún erro, a función devolve o valor -1.

time[editar]

A función ten o seguinte prototipo:

time_t time(time_t* timer)

Obtén a hora actual (en segundos) do reloxo do sistema, e almacena o valor na variable timer. En caso de que timer sexa un punteiro nulo, o valor non se almacena na variable, pero a función devolve dito valor igualmente.

strftime[editar]

A función ten o seguinte prototipo:

size t strftime(char* s, size t n, const char* format, const struct tm* tptr)

Dálle a tptr un formato de data ou hora.

strptime[editar]

A función ten o seguinte prototipo:

char * strptime(const char* buf, const char* format, struct tm* tptr)

Busca os valores da cadea buf na estrutura tptr. En caso de atopar un, devolve un punteiro ao carácter que segue ao último carácter analizado. Se non dá atopado ningunha coincidencia, devolve o valor nulo.

timegm[editar]

A función ten o seguinte prototipo:

time_t timegm(struct tm *brokentime)

Esta función é idéntica a mktime salvo porque sempre interpreta o valor recibido como UTC ignorando calquera configuración rexional. Téñase en conta que é a función inversa de gmtime.

En cuestións de portabilidade, mktime está dispoñible de maneira universal, mentres que timegm é pouco habitual en comparación. Para conseguir unha conversión de data UTC a data normal máis portable (aínda que non preparado para a programación de “varios fíos”), déalle o valor UTC á variable de ambiente TZ, faga unha chamada a mktime, e logo devólvalle a TZ o seu valor anterior.

Claves[editar]

Neste ficheiro de cabeceira defínense unhas claves:

CLK_PER_SEC[editar]

Esta clave o número de “golpes” de reloxo por segundo. Utilízaa a función clock().

CLOCKS_PER_SEC[editar]

Esta clave consiste nunha denominación alternativa para CLK_PER_SEC.

CLK_TCK[editar]

Esta é unha clave obsoleta para referirse a CLK_PER_SEC.

Tipos[editar]

clock_t[editar]

É o tipo de dato que devolve clock(). Adoita corresponderse cun int ou un long int.

time_t[editar]

É o tipo de dato que devolve time(). Adoita corresponderse cun int ou un long int.

struct tm[editar]

Esta estrutura é unha forma de representación de datas, “tipo calendario”. A estrutura está formada polos seguintes membros:

Elemento Tipo Descrición Exemplo
tm_hour int Hora (entre 0 e 23).
tm_isdst int Se o horario de verán está activado (valor maior que cero), desactivado (0) ou descoñecido (valor menos que cero).
tm_mday int Día do mes (do 1 ao 31).
tm_min int Minutos (do 0 ao 59).
tm_mon int Mes (do 0 ao 11, equivalendo o cero a xaneiro).
tm_sec int Segundos (do 0 ao 60, correspondendo este último valor a un “segundo intercalar”).
tm_wday int Día da semana (do 0 ao 6, onde o cero é o domingo).
tm_yday int Día do ano (do 0 ao 365).
tm_year int Ano dende o 1900.


C
← Volver a tgmath.h time.h Seguir con wchar.h