Linguaggio C++

Libreria Ctime

Introduzione alla libreria ctime del C++: gestione del tempo nel formato C, funzioni principali, conversioni di data/ora e laboratorio guidato.

La libreria <ctime> deriva dal C e fornisce funzioni per lavorare con:

  • tempo corrente
  • date e orari
  • conversione tra formati
  • misurazione di intervalli di tempo

Lavora principalmente con le strutture time_t e tm.


1️⃣ Inclusione della libreria


#include <ctime>
using namespace std;

2️⃣ Strutture dati fondamentali

time_t

Rappresenta il tempo in secondi dal 1° gennaio 1970 (Unix epoch).

struct tm

Contiene data e ora scomposte in campi come anno, mese, giorno, ora, minuti...


3️⃣ Funzioni principali di <ctime>

FunzioneDescrizione
time()Restituisce il tempo corrente come time_t
localtime()Converte time_t in data/ora locali (struct tm)
gmtime()Converte in data/ora GMT
ctime()Converte time_t in stringa leggibile
asctime()Converte una struct tm in stringa leggibile
mktime()Converte una struct tm in time_t
difftime()Restituisce la differenza tra due time_t in secondi

4️⃣ Ottenere ora e data attuali


time_t ora_attuale = time(NULL);
cout << ora_attuale;  // secondi dal 1970

5️⃣ Convertire time_t in data leggibile


time_t ora = time(NULL);
cout << ctime(&ora);
Esempio di output:

Mon Feb 17 14:23:11 2025

6️⃣ Convertire in struct tm (data scomposta)


time_t ora = time(NULL);
tm* dati = localtime(&ora);

cout << "Anno: " << dati->tm_year + 1900 << endl;
cout << "Mese: " << dati->tm_mon + 1 << endl;
cout << "Giorno: " << dati->tm_mday << endl;
cout << "Ora: " << dati->tm_hour << endl;

7️⃣ Differenza di tempo tra due istanti


time_t t1 = time(NULL);
sleep(2);
time_t t2 = time(NULL);

cout << "Differenza: " << difftime(t2, t1); // 2 secondi

8️⃣ Esempio completo: costruire una data


tm data = {0};

data.tm_year = 2025 - 1900;
data.tm_mon  = 3 - 1;
data.tm_mday = 20;
data.tm_hour = 10;
data.tm_min  = 30;

time_t t = mktime(&data);

cout << ctime(&t);
LABORATORIO

<ctime>: Data, Ora e Intervalli di Tempo

In questo laboratorio imparerai ad ottenere la data attuale, scomporre un istante nei suoi componenti (giorno, mese, anno) e calcolare differenze fra due timestamp utilizzando la libreria <ctime>.


1 Mostra la data e l ora attuale


time_t now = time(NULL);
cout << "Ora attuale: " << ctime(&now);

2 Scomponi la data


time_t now = time(NULL);
tm* t = localtime(&now);

cout << t->tm_mday << "/" << t->tm_mon+1 << "/" << t->tm_year+1900;

3 Calcola un intervallo

Calcola la differenza in secondi fra due istanti.


time_t t1 = time(NULL);
sleep(3);
time_t t2 = time(NULL);

cout << "Differenza: " << difftime(t2,t1);

4 Crea una data personalizzata


tm d = {0};
d.tm_year = 2030 - 1900;
d.tm_mon = 0;
d.tm_mday = 1;

time_t t = mktime(&d);
cout << ctime(&t);

5 Esercizi

  • Calcola quanti giorni mancano ad una data scelta dall utente.
  • Stampa il giorno della settimana (0 = domenica, ...).
  • Mostra un timer che aumenta ogni secondo.
  • Converti un time_t in formato italiano (gg/mm/aaaa).