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>
| Funzione | Descrizione |
|---|---|
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>.
Strumenti:
- Libreria
<ctime> - Strutture
time_tetm - Funzioni time(), ctime(), difftime()
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_tin formato italiano (gg/mm/aaaa).