2011-12-01 14 views
10

Come ottenere la data corrente d/m/y. Ho bisogno che abbiano 3 diverse variabili non una, ad esempio day=d; month=m; year=y;.Come ottenere la data e l'ora correnti?

+1

è necessario specificare una piattaforma. – unwind

+0

Cosa hai provato? http://stackoverflow.com/questions/997946/c-get-current-time-and-date – daniloquio

+0

@Fredrik, è più semplice chiedere che fare ricerche. –

risposta

21

Per Linux, si utilizzerà la funzione 'localtime'.

#include <time.h> 

time_t theTime = time(NULL); 
struct tm *aTime = localtime(&theTime); 

int day = aTime->tm_mday; 
int month = aTime->tm_mon + 1; // Month is 0 - 11, add 1 to get a jan-dec 1-12 concept 
int year = aTime->tm_year + 1900; // Year is # years since 1900 
+0

Intendevi localtime (& time (NULL)); ? – maximus

+0

Ho corretto la risposta in quanto non sarebbe stata compilata così com'è. Non è possibile un rvalue per puntatore (cioè solo un numero) quindi è necessario inserirlo in una variabile prima – Petesh

2

La libreria ctime fornisce tale funzionalità.

Controllare anche this. È un altro post che potrebbe aiutarti a seconda della tua piattaforma.

+1

'#include #include utilizzando namespace std; int main() { time_t t = time (0); // ottiene Adesso struct tm * ora = localtime (& t); cout << (now-> tm_year + 1900) << '-' << (now-> tm_mon + 1) << '-' << now-> tm_mday << endl; } 'Grazie – Wizard

10

Qui è il modo in cui chrono (C++ 0x) - vedere in diretta su http://ideone.com/yFm9P

#include <chrono> 
#include <ctime> 
#include <iostream> 

using namespace std; 

typedef std::chrono::system_clock Clock; 

int main() 
{ 
    auto now = Clock::now(); 
    std::time_t now_c = Clock::to_time_t(now); 
    struct tm *parts = std::localtime(&now_c); 

    std::cout << 1900 + parts->tm_year << std::endl; 
    std::cout << 1 + parts->tm_mon << std::endl; 
    std::cout <<  parts->tm_mday << std::endl; 

    return 0; 
} 
+1

pubblicato l'esempio di lavoro in tempo reale su http://ideone.com/yFm9P – sehe

+0

@PaoloM che l'intestazione è richiesta per [' std :: time_t'] (http://en.cppreference.com/w/cpp/chrono/c/time_t) – sehe

+0

Spiacente, sotto gcc 4.8 si compila senza "". Viene incluso da '' di sicuro. –

Problemi correlati