Calcolare data e ora corrente in C++

Mattepuffo's logo
Calcolare data e ora corrente in C++

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(&currentTime);
    cout << asctime(localtime(&currentTime)) << 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(&currentTime);
    struct tm *localTime = localtime(&currentTime);
    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!


Condividi

Commentami!