Fecha y hora de C ++

La biblioteca estándar de C ++ no proporciona un tipo de fecha adecuado. C ++ hereda las estructuras y funciones para la manipulación de la fecha y la hora de C. Para acceder a las funciones y estructuras relacionadas con la fecha y la hora, debe incluir el archivo de encabezado <ctime> en su programa C ++.

Hay cuatro tipos relacionados con el tiempo: clock_t, time_t, size_ty tm. Los tipos: clock_t, size_t y time_t son capaces de representar la fecha y hora del sistema como una especie de entero.

El tipo de estructura tm contiene la fecha y la hora en forma de una estructura C que tiene los siguientes elementos:

struct tm {
   int tm_sec;   // seconds of minutes from 0 to 61
   int tm_min;   // minutes of hour from 0 to 59
   int tm_hour;  // hours of day from 0 to 24
   int tm_mday;  // day of month from 1 to 31
   int tm_mon;   // month of year from 0 to 11
   int tm_year;  // year since 1900
   int tm_wday;  // days since sunday
   int tm_yday;  // days since January 1st
   int tm_isdst; // hours of daylight savings time
}

A continuación se muestran las funciones importantes que usamos al trabajar con fecha y hora en C o C ++. Todas estas funciones son parte de la biblioteca estándar de C y C ++ y puede verificar sus detalles usando la referencia a la biblioteca estándar de C ++ que se proporciona a continuación.

No Señor Función y propósito
1

time_t time(time_t *time);

Esto devuelve el tiempo de calendario actual del sistema en el número de segundos transcurridos desde el 1 de enero de 1970. Si el sistema no tiene tiempo, se devuelve .1.

2

char *ctime(const time_t *time);

Esto devuelve un puntero a una cadena de la forma día mes año horas: minutos: segundos año \ n \ 0 .

3

struct tm *localtime(const time_t *time);

Esto devuelve un puntero al tm estructura que representa la hora local.

4

clock_t clock(void);

Esto devuelve un valor que se aproxima a la cantidad de tiempo que se ha estado ejecutando el programa de llamada. Se devuelve un valor de .1 si el tiempo no está disponible.

5

char * asctime ( const struct tm * time );

Esto devuelve un puntero a una cadena que contiene la información almacenada en la estructura apuntada por el tiempo convertida en la forma: día mes fecha horas: minutos: segundos año \ n \ 0

6

struct tm *gmtime(const time_t *time);

Esto devuelve un puntero al tiempo en forma de estructura tm. La hora se representa en hora universal coordinada (UTC), que es esencialmente la hora media de Greenwich (GMT).

7

time_t mktime(struct tm *time);

Esto devuelve el equivalente en tiempo calendario del tiempo encontrado en la estructura apuntada por tiempo.

8

double difftime ( time_t time2, time_t time1 );

Esta función calcula la diferencia en segundos entre time1 y time2.

9

size_t strftime();

Esta función se puede utilizar para formatear la fecha y la hora en un formato específico.

Fecha y hora actual

Suponga que desea recuperar la fecha y hora actual del sistema, ya sea como hora local o como hora universal coordinada (UTC). A continuación se muestra el ejemplo para lograr lo mismo:

#include <iostream>
#include <ctime>

using namespace std;

int main() {
   // current date/time based on current system
   time_t now = time(0);
   
   // convert now to string form
   char* dt = ctime(&now);

   cout << "The local date and time is: " << dt << endl;

   // convert now to tm struct for UTC
   tm *gmtm = gmtime(&now);
   dt = asctime(gmtm);
   cout << "The UTC date and time is:"<< dt << endl;
}

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

The local date and time is: Sat Jan  8 20:07:41 2011

The UTC date and time is:Sun Jan  9 03:07:41 2011

Formatear el tiempo usando struct tm

los tmLa estructura es muy importante al trabajar con fecha y hora en C o C ++. Esta estructura contiene la fecha y la hora en forma de estructura C como se mencionó anteriormente. La mayoría de las funciones relacionadas hacen uso de la estructura tm. A continuación se muestra un ejemplo que hace uso de varias funciones relacionadas con la fecha y la hora y la estructura tm:

Al usar la estructura en este capítulo, supongo que tiene un conocimiento básico de la estructura C y cómo acceder a los miembros de la estructura usando la flecha -> operador.

#include <iostream>
#include <ctime>

using namespace std;

int main() {
   // current date/time based on current system
   time_t now = time(0);

   cout << "Number of sec since January 1,1970 is:: " << now << endl;

   tm *ltm = localtime(&now);

   // print various components of tm structure.
   cout << "Year:" << 1900 + ltm->tm_year<<endl;
   cout << "Month: "<< 1 + ltm->tm_mon<< endl;
   cout << "Day: "<< ltm->tm_mday << endl;
   cout << "Time: "<< 5+ltm->tm_hour << ":";
   cout << 30+ltm->tm_min << ":";
   cout << ltm->tm_sec << endl;
}

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

Number of sec since January 1,1970 is:: 1588485717
Year:2020
Month: 5
Day: 3
Time: 11:31:57