Calcolare data e ora corrente in C++
Vediamo oggi una piccola funzione per calcolare data e ora corrente in C++.
Per farlo ci bastano poche righe di codice e la libreria ctime.
Da questa libreria prenderemo:
- la funzione time(), che ritorna un oggetto di tipo time_t e in pratica legge l'ora corrente come numero di secondi trascorsi dal 1° Gennaio 1970
- la funzione asctime(), che converte l'orario in stringa
- la funzione localtime(), che contiente l'ora corrente suddivisa in diverse parti (giorni, ore, ecc)
- la funzione strftime(), per formattare l'output
Quindi la nostra funzione sarà qualcosa del genere:
#include <iostream>
#include <ctime>using namespace std;
int main() {
time_t currentTime;
time(¤tTime);
cout << asctime(localtime(¤tTime)) << endl;
return 0;
}
Creiamo una variabile di tipo time_t.
Poi con la funzione time() leggiamo l'ora corrente e la salviamo nella varibile currentTime.
Poi stampiamo l'output usando asctime() per trasformare in stringa l'ora corrente che ci viene restituita dal localtime().
L'ouput sarà una tipo questo:
Wed Dec 12 12:59:09 2012
Non molto ben formattato a dire il vero.
Modifichiamo quindi la funzione:
#include <iostream>
#include <ctime>using namespace std;
int main() {
char buffer [80];
time_t currentTime;
time(¤tTime);
struct tm *localTime = localtime(¤tTime);
strftime(buffer, 80, "Sono le %I:%M%p, del giorno %d/%m/%Y.", localTime);
cout << buffer << endl;
return 0;
}
Abbiamo fatto fuori asctime(), e introdotto strftime() per formattare l'ouput.
In più abbiamo aggiunto anche una struct di tipo tm, una struttura che contiene date e tempo divisi nei suoi componenti.
Infine formattiamo l'output come vogliamo noi seguendo le linee guida della funzione:
Sono le 01:13PM, del giorno 12/12/2012.
Per vedere le possibili opzioni di formattazione supportate guardate qua.
In generale nel link postato sopra trovate i link a tutti gli elementi usati nella funzione!
c++ c++ ctime time_tstruct tm asctime strftim
Commentami!