C++ Fecha y hora

La biblioteca estándar de C++ no proporciona ningún tipo de fecha como tal. C++ hereda las estructuras y funciones del lenguaje C para la manipulación de fechas y horas. Para usar las funciones y estructuras relacionadas con fecha y hora, es necesario incluir el archivo de encabezado <ctime> en un programa C++.

Hay cuatro tipos relacionados con el tiempo:clock_t、time_t、size_tytmLos tipos clock_t, size_t y time_t pueden representar la hora y la fecha del sistema como un tipo de entero.

Tipo de estructuratmGuarda la fecha y la hora en forma de una estructura de C. La definición de la estructura tm es la siguiente:

struct tm { int tm_sec; // segundos, rango normal de 0 a 59, pero se permite hasta 61 int tm_min; // minutos, rango de 0 a 59 int tm_hour; // horas, rango de 0 a 23 int tm_mday; // día del mes, rango de 1 a 31 int tm_mon; // mes, rango de 0 a 11 int tm_year; // años desde 1900 int tm_wday; // día de la semana, rango de 0 a 6, comenzando desde el domingo int tm_yday; // día del año, rango de 0 a 365, comenzando desde el 1 de enero int tm_isdst; // horario de verano };

Las siguientes son funciones importantes de C/C++ relacionadas con la fecha y la hora. Todas estas funciones son parte de la biblioteca estándar de C/C++. Puede consultar los detalles de cada función en la biblioteca estándar de C++.

N.ºFunción y descripción
1time_t time(time_t *time);
Esta función devuelve la hora de calendario actual del sistema, como el número de segundos transcurridos desde el 1 de enero de 1970. Si el sistema no tiene hora, devuelve -1.
2char *ctime(const time_t *time);
Devuelve un puntero a una cadena cuyo contenido representa la hora local, con el formato:
Www Mmm dd hh:mm:ss yyyy\n\0

donde:

  • WwwDía de la semana (p. ej., Tue)
  • MmmMes (p. ej., Jul)
  • ddDía (p. ej., 29)
  • hh:mm:ssHora (formato de 24 horas)
  • yyyyAño (p. ej., 2025)
  • Al final incluye un carácter de nueva línea\ny un carácter de terminación nulo\0

Ejemplo de valor de retorno:

"Tue Jul 29 19:12:15 2025\n\0"
3struct tm *localtime(const time_t *time);
Esta función devuelve un puntero a la estructuratmque representa la hora local.
4clock_t clock(void);
Esta función devuelve el tiempo de reloj del procesador utilizado desde el inicio de la ejecución del programa (generalmente el inicio del programa). Si el tiempo no está disponible, devuelve -1.
5char * asctime ( const struct tm * time );
Esta función devuelve un puntero a una cadena que contiene la información almacenada en la estructura a la que apunta time. El formato de retorno es: day month date hours:minutes:seconds year\n\0.
6struct tm *gmtime(const time_t *time);
Esta función devuelve un puntero a time, siendo time una estructura tm, expresado en Tiempo Universal Coordinado (UTC), también conocido como Hora Media de Greenwich (GMT).
7time_t mktime(struct tm *time);
Esta función devuelve la hora de calendario equivalente a la hora almacenada en la estructura a la que apunta time.
8double difftime ( time_t time2, time_t time1 );
Esta función devuelve el número de segundos de diferencia entre time1 y time2.
9size_t strftime();
Esta función se puede utilizar para formatear la fecha y la hora en el formato especificado.

Fecha y hora actuales

El siguiente ejemplo obtiene la fecha y la hora actuales del sistema, incluyendo la hora local y el Tiempo Universal Coordinado (UTC).

Ejemplo

#include <iostream> #include <ctime> using namespace std; int main( ) { // Fecha/hora actuales basadas en el sistema actual time_t now = time(0); // Convierte now en una cadena char* dt = ctime(&now); cout << "Fecha y hora locales:" << dt << endl; // Convierte now en estructura tm tm *gmtm = gmtime(&now); dt = asctime(gmtm); cout << "Fecha y hora UTC:"<< dt << endl; }

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

本地日期和时间:Sat Jan  8 20:07:41 2011

UTC 日期和时间:Sun Jan  9 03:07:41 2011

Formatear la hora usando la estructura tm

tmLa estructura es especialmente importante en C/C++ al manejar operaciones relacionadas con fecha y hora. La estructura tm guarda la fecha y la hora en forma de estructura de C. La mayoría de las funciones relacionadas con el tiempo utilizan la estructura tm. El siguiente ejemplo utiliza la estructura tm y varias funciones relacionadas con fecha y hora.

Antes de practicar el uso de la estructura, es necesario tener un conocimiento básico de la estructura de C y saber cómo usar el operador de flecha -> para acceder a los miembros de la estructura.

Ejemplo

#include <iostream> #include <ctime> using namespace std; int main( ) { // Fecha/hora actuales basadas en el sistema actual time_t now = time(0); cout << "Segundos transcurridos desde 1970 hasta ahora:" << now << endl; tm *ltm = localtime(&now); // Muestra los distintos componentes de la estructura tm cout << "Año:"<< 1900 + ltm->tm_year << endl; cout << "Mes:"<< 1 + ltm->tm_mon<< endl; cout << "Día:"<< ltm->tm_mday << endl; cout << "Hora:"<< ltm->tm_hour << ":"; cout << ltm->tm_min << ":"; cout << ltm->tm_sec << endl; }

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

1970 到目前时间:1503564157
年: 2017
月: 8
日: 24
时间: 16:42:37
Otras extensiones