C/time.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
editarasctime
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
editarNeste 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
editarclock_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. |