Data e ora C ++

La libreria standard C ++ non fornisce un tipo di data appropriato. C ++ eredita le strutture e le funzioni per la manipolazione di data e ora da C. Per accedere a funzioni e strutture correlate a data e ora, è necessario includere il file di intestazione <ctime> nel programma C ++.

Esistono quattro tipi di tempo: clock_t, time_t, size_t, e tm. I tipi - clock_t, size_t e time_t sono in grado di rappresentare l'ora e la data del sistema come una sorta di numero intero.

Il tipo di struttura tm contiene la data e l'ora sotto forma di una struttura a C con i seguenti elementi:

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
}

Di seguito sono riportate le funzioni importanti, che utilizziamo mentre lavoriamo con la data e l'ora in C o C ++. Tutte queste funzioni fanno parte della libreria standard C e C ++ e puoi verificarne i dettagli facendo riferimento alla libreria standard C ++ fornita di seguito.

Suor n Funzione e scopo
1

time_t time(time_t *time);

Ciò restituisce l'ora del calendario corrente del sistema in numero di secondi trascorsi dal 1 gennaio 1970. Se il sistema non ha l'ora, viene restituito .1.

2

char *ctime(const time_t *time);

Restituisce un puntatore a una stringa del formato giorno mese anno ore: minuti: secondi anno \ n \ 0 .

3

struct tm *localtime(const time_t *time);

Ciò restituisce un puntatore al file tm struttura che rappresenta l'ora locale.

4

clock_t clock(void);

Restituisce un valore che approssima la quantità di tempo in cui è stato eseguito il programma chiamante. Se l'ora non è disponibile, viene restituito un valore .1.

5

char * asctime ( const struct tm * time );

Questo restituisce un puntatore a una stringa che contiene le informazioni memorizzate nella struttura puntata dall'ora convertita nella forma: giorno mese data ore: minuti: secondi anno \ n \ 0

6

struct tm *gmtime(const time_t *time);

Questo restituisce un puntatore all'ora sotto forma di una struttura tm. L'ora è rappresentata in Coordinated Universal Time (UTC), che è essenzialmente Greenwich Mean Time (GMT).

7

time_t mktime(struct tm *time);

Restituisce l'equivalente del tempo di calendario del tempo trovato nella struttura a cui punta l'ora.

8

double difftime ( time_t time2, time_t time1 );

Questa funzione calcola la differenza in secondi tra time1 e time2.

9

size_t strftime();

Questa funzione può essere utilizzata per formattare la data e l'ora in un formato specifico.

Data e ora correnti

Si supponga di voler recuperare la data e l'ora del sistema corrente, come ora locale o come UTC (Coordinated Universal Time). Di seguito è riportato l'esempio per ottenere lo stesso:

#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;
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

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

Formattare l'ora utilizzando struct tm

Il tmla struttura è molto importante quando si lavora con la data e l'ora in C o C ++. Questa struttura contiene la data e l'ora sotto forma di una struttura C come menzionato sopra. La maggior parte delle funzioni correlate al tempo utilizza la struttura tm. Di seguito è riportato un esempio che fa uso di varie funzioni relative a data e ora e struttura tm -

Durante l'utilizzo della struttura in questo capitolo, presumo che tu abbia una conoscenza di base della struttura C e di come accedere ai membri della struttura usando freccia -> operatore.

#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;
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

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