Come ottenere l'ora e la data attuali in C ++?


457

Esiste un modo multipiattaforma per ottenere la data e l'ora correnti in C ++?


2
Se Ockonal è ancora attivo, dovrebbe cambiare la risposta accettata all'approccio C ++ 11. Questa domanda sembra avere ancora molti punti di vista.
JSQuareD


3
@JSQuareD Anche guardando questa domanda ora dopo tutto questo tempo, trovo l'approccio C migliore usando la tmstruttura. L'approccio C ++ 11 non fornisce semplicemente il timestamp di unix (tempo dall'epoca) anche se la domanda era su come ottenere la data e l'ora?
Anddero,

Wow, questa domanda ha 1.110.886 visualizzazioni! Le persone adorano davvero il C ++!
Utente 123

Risposte:


595

In C ++ 11 è possibile utilizzare std::chrono::system_clock::now()

Esempio (copiato da en.cppreference.com ):

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

int main()
{
    auto start = std::chrono::system_clock::now();
    // Some computation here
    auto end = std::chrono::system_clock::now();

    std::chrono::duration<double> elapsed_seconds = end-start;
    std::time_t end_time = std::chrono::system_clock::to_time_t(end);

    std::cout << "finished computation at " << std::ctime(&end_time)
              << "elapsed time: " << elapsed_seconds.count() << "s\n";
}

Questo dovrebbe stampare qualcosa del genere:

finished computation at Mon Oct  2 00:59:08 2017
elapsed time: 1.88232s

28
Questo dovrebbe essere votato perché è il modo più portatile e semplice nell'attuale C ++.
Johannes

4
@Johannes, ho appena aggiunto il mio. Di questo passo, questa dovrebbe essere la risposta migliore entro il 15 agosto 2017, alle 16:31 UTC :-)
Martin Broadhurst

62
Questa risposta è di scarsa utilità senza esempi di utilizzo del valore ottenuto. Ad esempio, come è possibile stamparlo, ottenere l'ora locale, confrontare con altra data / ora?
Steed

32
Questa è la risposta peggiore possibile. Rende duplicate altre risposte di c ++ 11, eppure non spiega nulla, essendo un 'solo link'.
v010dya,

10
Non c'è modo di arrivare al punto più di questa risposta. L'OP chiedeva "Esiste un modo multipiattaforma per ottenere la data e l'ora correnti in C ++?" Questa domanda ti dà esattamente questo. In caso di dubbi su come ottenere un stringda streamo come formattare correttamente un time_point<>, andare avanti e porre un'altra domanda o google dopo.
Tarc

482

C ++ condivide le sue funzioni di data / ora con C. La struttura tm è probabilmente la più semplice con cui un programmatore C ++ può lavorare - la seguente data di stampa:

#include <ctime>
#include <iostream>

int main() {
    std::time_t t = std::time(0);   // get time now
    std::tm* now = std::localtime(&t);
    std::cout << (now->tm_year + 1900) << '-' 
         << (now->tm_mon + 1) << '-'
         <<  now->tm_mday
         << "\n";
}

26
Utilizzare ctime()insieme a questa risposta se si desidera una stringa di data.
ralphtheninja,

3
che dire di eliminare l'istanza di struct tmè possibile semplicemente chiamare Elimina su di essa?
Petr

4
@Petr devi solo chiamare delete sulla memoria allocata con new.
iheanyi,

4
ok ma hai ancora un puntatore da localtime () quindi l'istanza della struttura viene allocata su heap o no? il che significa che non viene pulito se non lo fai in qualche modo. Non ho mai detto di usarlo delete(parola chiave c ++), ho pensato che dovesse essere cancellato in qualche modo :) o chi lo farà per te?
Petr,

9
@Petr Non è necessario dislocarlo perché è allocato staticamente, vedere qui per questo argomento stackoverflow.com/questions/8694365/…
Brandin,

180

Puoi provare il seguente codice multipiattaforma per ottenere la data / ora corrente:

#include <iostream>
#include <string>
#include <stdio.h>
#include <time.h>

// Get current date/time, format is YYYY-MM-DD.HH:mm:ss
const std::string currentDateTime() {
    time_t     now = time(0);
    struct tm  tstruct;
    char       buf[80];
    tstruct = *localtime(&now);
    // Visit http://en.cppreference.com/w/cpp/chrono/c/strftime
    // for more information about date/time format
    strftime(buf, sizeof(buf), "%Y-%m-%d.%X", &tstruct);

    return buf;
}

int main() {
    std::cout << "currentDateTime()=" << currentDateTime() << std::endl;
    getchar();  // wait for keyboard input
}

Produzione:

currentDateTime()=2012-05-06.21:47:59

Visitare qui per ulteriori informazioni sul formato data / ora


Ciao. Ho un piccolo problema con questa allocazione "buf" all'interno della funzione "currentDateTime ()". Come dovrebbe persistere dopo il ritorno della funzione? Grazie.
Léa Massiot,

7
Il tipo restituito è "const std :: string", quindi viene restituito per valore e quindi viene creata una copia del buffer, prima di rilasciarlo.
barranquero,

3
Perché restituire constvalore? È inutile.
Razze di leggerezza in orbita,

più 1 per la soluzione multipiattaforma!
Ziagl,

139

librerie std C forniscono time(). Questo è secondi dall'epoca e può essere convertito fino ad oggi e H:M:Susando le funzioni C standard. Boost ha anche una libreria di data / ora che puoi controllare.

time_t  timev;
time(&timev);

24
La risposta di anon sotto ha una struttura migliore e fornisce un esempio migliore.
MDTech.us_MAN,

2
Inoltre, ha chiesto di C ++ e non di C.
jterm,

2
@jterm è ok, C e C ++ condividono esattamente la stessa libreria temporale, è una questione di nomi di importazione diversi e basta
Joseph Farah,

31

la libreria standard C ++ non fornisce un tipo di data appropriato. C ++ eredita le strutture e le funzioni per la manipolazione di data e ora da C, insieme a un paio di funzioni di input / output data / ora che tengono conto della localizzazione.

// Current date/time based on current system
time_t now = time(0);

// Convert now to tm struct for local timezone
tm* localtm = localtime(&now);
cout << "The local date and time is: " << asctime(localtm) << endl;

// Convert now to tm struct for UTC
tm* gmtm = gmtime(&now);
if (gmtm != NULL) {
cout << "The UTC date and time is: " << asctime(gmtm) << endl;
}
else {
cerr << "Failed to get the UTC date and time" << endl;
return EXIT_FAILURE;
}

25

Nuova risposta per una vecchia domanda:

La domanda non specifica in quale fuso orario. Esistono due ragionevoli possibilità:

  1. In UTC.
  2. Nel fuso orario locale del computer.

Per 1, è possibile utilizzare questa libreria di date e il seguente programma:

#include "date.h"
#include <iostream>

int
main()
{
    using namespace date;
    using namespace std::chrono;
    std::cout << system_clock::now() << '\n';
}

Che ho appena prodotto per me:

2015-08-18 22:08:18.944211

La libreria di date essenzialmente aggiunge solo un operatore di streaming per std::chrono::system_clock::time_point . Aggiunge anche molte altre belle funzionalità, ma che non viene utilizzato in questo semplice programma.

Se preferisci 2 (l'ora locale), c'è una libreria di fuso orario che si basa sulla libreria di date . Entrambe queste librerie sono open source e multipiattaforma , supponendo che il compilatore supporti C ++ 11 o C ++ 14.

#include "tz.h"
#include <iostream>

int
main()
{
    using namespace date;
    using namespace std::chrono;
    auto local = make_zoned(current_zone(), system_clock::now());
    std::cout << local << '\n';
}

Che per me ha appena prodotto:

2015-08-18 18:08:18.944211 EDT

Il tipo di risultato da make_zoneda date::zoned_timeè un accoppiamento di a date::time_zonee astd::chrono::system_clock::time_point . Questa coppia rappresenta l'ora locale, ma può anche rappresentare UTC, a seconda della modalità di query.

Con l'output di cui sopra, puoi vedere che il mio computer è attualmente in un fuso orario con un offset UTC di -4h e un'abbreviazione di EDT.

Se si desidera un altro fuso orario, è possibile farlo. Ad esempio, per trovare l'ora corrente a Sydney, in Australia, modifica la costruzione della variabile localin:

auto local = make_zoned("Australia/Sydney", system_clock::now());

E l'output cambia in:

2015-08-19 08:08:18.944211 AEST

Aggiornamento per C ++ 20

Questa libreria è ora ampiamente adottata per C ++ 20. Lo spazio dei nomi dateè sparito e ora tutto è nello spazio dei nomi std::chrono. E utilizzare zoned_timeal posto di make_time. Rilascia le intestazioni "date.h"e "tz.h"usa solo <chrono>.

Mentre scrivo, alcune implementazioni parziali stanno iniziando a emergere su alcune piattaforme.


non dovrebbe localtime darmi il tempo nel mio fuso orario?
Jonathan Mee,

Sì, localtimesarà quasi sempre dare il tempo nel vostro fuso orario locale a seconda di precisione. A volte non riuscirà a causa di problemi di sicurezza del thread e non funzionerà mai per una precisione inferiore al secondo.
Howard Hinnant,

19

(Per compagni googler)

C'è anche Boost :: date_time :

#include <boost/date_time/posix_time/posix_time.hpp>

boost::posix_time::ptime date_time = boost::posix_time::microsec_clock::universal_time();

16
auto time = std::time(nullptr);
std::cout << std::put_time(std::localtime(&time), "%F %T%z"); // ISO 8601 format.

Ottieni l'ora corrente utilizzando std::time()o std::chrono::system_clock::now()(o un altro tipo di orologio ).

std::put_time()(C ++ 11) e strftime()(C) offrono molti formattatori per produrre quei tempi.

#include <iomanip>
#include <iostream>

int main() {
    auto time = std::time(nullptr);
    std::cout
        // ISO 8601: %Y-%m-%d %H:%M:%S, e.g. 2017-07-31 00:42:00+0200.
        << std::put_time(std::gmtime(&time), "%F %T%z") << '\n'
        // %m/%d/%y, e.g. 07/31/17
        << std::put_time(std::gmtime(&time), "%D"); 
}

La sequenza dei formattatori è importante:

std::cout << std::put_time(std::gmtime(&time), "%c %A %Z") << std::endl;
// Mon Jul 31 00:00:42 2017 Monday GMT
std::cout << std::put_time(std::gmtime(&time), "%Z %c %A") << std::endl;
// GMT Mon Jul 31 00:00:42 2017 Monday

I formattatori di strftime()sono simili:

char output[100];
if (std::strftime(output, sizeof(output), "%F", std::gmtime(&time))) {
    std::cout << output << '\n'; // %Y-%m-%d, e.g. 2017-07-31
}

Spesso, il formattatore del capitale significa "versione completa" e minuscolo significa abbreviazione (ad esempio Y: 2017, y: 17).


Le impostazioni locali modificano l'output:

#include <iomanip>
#include <iostream>
int main() {
    auto time = std::time(nullptr);
    std::cout << "undef: " << std::put_time(std::gmtime(&time), "%c") << '\n';
    std::cout.imbue(std::locale("en_US.utf8"));
    std::cout << "en_US: " << std::put_time(std::gmtime(&time), "%c") << '\n';
    std::cout.imbue(std::locale("en_GB.utf8"));
    std::cout << "en_GB: " << std::put_time(std::gmtime(&time), "%c") << '\n';
    std::cout.imbue(std::locale("de_DE.utf8"));
    std::cout << "de_DE: " << std::put_time(std::gmtime(&time), "%c") << '\n';
    std::cout.imbue(std::locale("ja_JP.utf8"));
    std::cout << "ja_JP: " << std::put_time(std::gmtime(&time), "%c") << '\n';
    std::cout.imbue(std::locale("ru_RU.utf8"));
    std::cout << "ru_RU: " << std::put_time(std::gmtime(&time), "%c");        
}

Possibile output ( Coliru , Compiler Explorer ):

undef: Tue Aug  1 08:29:30 2017
en_US: Tue 01 Aug 2017 08:29:30 AM GMT
en_GB: Tue 01 Aug 2017 08:29:30 GMT
de_DE: Di 01 Aug 2017 08:29:30 GMT
ja_JP: 2017年08月01日 08時29分30秒
ru_RU: Вт 01 авг 2017 08:29:30

Ho usato std::gmtime()per la conversione in UTC. std::localtime()viene fornito per la conversione in ora locale.

Fai attenzione a che asctime()/ ctime()che sono stati menzionati in altre risposte sono contrassegnati come obsoleti ora e strftime()dovrebbero essere preferiti.


14
#include <stdio.h>
#include <time.h>

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;

  time ( &rawtime );
  timeinfo = localtime ( &rawtime );
  printf ( "Current local time and date: %s", asctime (timeinfo) );

  return 0;
} 

12

Sì, e puoi farlo con le regole di formattazione specificate dalla locale attualmente incorporata:

#include <iostream>
#include <iterator>
#include <string>

class timefmt
{
public:
    timefmt(std::string fmt)
        : format(fmt) { }

    friend std::ostream& operator <<(std::ostream &, timefmt const &);

private:
    std::string format;
};

std::ostream& operator <<(std::ostream& os, timefmt const& mt)
{
    std::ostream::sentry s(os);

    if (s)
    {
        std::time_t t = std::time(0);
        std::tm const* tm = std::localtime(&t);
        std::ostreambuf_iterator<char> out(os);

        std::use_facet<std::time_put<char>>(os.getloc())
            .put(out, os, os.fill(),
                 tm, &mt.format[0], &mt.format[0] + mt.format.size());
    }

    os.width(0);

    return os;
}

int main()
{
    std::cout << timefmt("%c");
}

Produzione: Fri Sep 6 20:33:31 2013


1
Questa è, IMHO, in realtà la risposta migliore, poiché è l'unica che onora le impostazioni locali e perché è programmata con una tale attenzione ai dettagli (non la vedi ostream::sentryspesso).
DevSolar,

@DevSolar Grazie. Non direi che è il migliore però. Ho visto implementazioni migliori. Ma penso che questo sia sufficiente per un esempio :)
0x499602D2,

Non compilato per me. Essendo un principiante non posso commentare il perché.
Historystamp

8

potresti usare la classe temporale C ++ 11:

    #include <iostream>
    #include <iomanip>
    using namespace std;

    int main() {

       time_t now = chrono::system_clock::to_time_t(chrono::system_clock::now());
       cout << put_time(localtime(&now), "%F %T") <<  endl;
      return 0;
     }

produzione:

2017-08-25 12:30:08

6

C'è sempre la __TIMESTAMP__macro del preprocessore.

#include <iostream>

using namespace std

void printBuildDateTime () {
    cout << __TIMESTAMP__ << endl;
}

int main() {
    printBuildDateTime();
}

esempio: dom 13 aprile 11:28:08 2014


27
Ciò non funzionerà poiché TIMESTAMP fornirà l'ora in cui il file viene creato anziché l'ora corrente.
feelfree,

3
ripensandoci, non ho idea del perché mi sentissi in grado di rispondere a una domanda C ++
James Robert Albert,

1
__TIMESTAMP__è una macro preprocessore che si espande all'ora corrente (in fase di compilazione) nel formato Ddd Mmm Data hh :: mm :: ss yyyy. La __TIMESTAMP__macro può essere utilizzata per fornire informazioni sul momento particolare in cui è stato creato un file binario. Consultare: cprogramming.com/reference/preprocessor/__TIMESTAMP__.html
avvio automatico

4

Puoi anche usare direttamente ctime():

#include <stdio.h>
#include <time.h>

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;

  time ( &rawtime );
  printf ( "Current local time and date: %s", ctime (&rawtime) );

  return 0;
} 

4
in VS2012 devo aggiungere #define _CRT_SECURE_NO_DEPRECATEprima di includere per compilare il programma
javapowered

4

Ho trovato questo link abbastanza utile per la mia implementazione: data e ora C ++

Ecco il codice che uso nella mia implementazione, per ottenere un formato di output "AAAAMMGG HHMMSS" chiaro. Il parametro in è per alternare l'ora UTC e l'ora locale. Puoi facilmente modificare il mio codice per soddisfare le tue necessità.

#include <iostream>
#include <ctime>

using namespace std;

/**
 * This function gets the current date time
 * @param useLocalTime true if want to use local time, default to false (UTC)
 * @return current datetime in the format of "YYYYMMDD HHMMSS"
 */

string getCurrentDateTime(bool useLocalTime) {
    stringstream currentDateTime;
    // current date/time based on current system
    time_t ttNow = time(0);
    tm * ptmNow;

    if (useLocalTime)
        ptmNow = localtime(&ttNow);
    else
        ptmNow = gmtime(&ttNow);

    currentDateTime << 1900 + ptmNow->tm_year;

    //month
    if (ptmNow->tm_mon < 9)
        //Fill in the leading 0 if less than 10
        currentDateTime << "0" << 1 + ptmNow->tm_mon;
    else
        currentDateTime << (1 + ptmNow->tm_mon);

    //day
    if (ptmNow->tm_mday < 10)
        currentDateTime << "0" << ptmNow->tm_mday << " ";
    else
        currentDateTime <<  ptmNow->tm_mday << " ";

    //hour
    if (ptmNow->tm_hour < 10)
        currentDateTime << "0" << ptmNow->tm_hour;
    else
        currentDateTime << ptmNow->tm_hour;

    //min
    if (ptmNow->tm_min < 10)
        currentDateTime << "0" << ptmNow->tm_min;
    else
        currentDateTime << ptmNow->tm_min;

    //sec
    if (ptmNow->tm_sec < 10)
        currentDateTime << "0" << ptmNow->tm_sec;
    else
        currentDateTime << ptmNow->tm_sec;


    return currentDateTime.str();
}

Uscita (UTC, EST):

20161123 000454
20161122 190454

Perché hai chiesto se il ptmNow->tm_day < 9e no <10?
STF

Voglio che un giorno (diciamo il giorno X) meno di 9 sia 0X (ovvero 1 -> 01, 9 -> 09) per riempire lo spazio, al fine di abbinare il nostro design. Il giorno 10 può essere semplicemente 10 nella stringa.
Joe,

Quindi devi chiedere se è <=9perché vuoi includere anche 9.
STF

Nota Ho un 1+nel codice. Il giorno / mese inizia alle 0.
Joe

il mese inizia da 0, ma il giorno inizia da 1!
STF

3

Funziona con G ++ Non sono sicuro che questo ti aiuti. Uscita del programma:

The current time is 11:43:41 am
The current date is 6-18-2015 June Wednesday 
Day of month is 17 and the Month of year is 6,
also the day of year is 167 & our Weekday is 3.
The current year is 2015.

Codice :

#include <ctime>
#include <iostream>
#include <string>
#include <stdio.h>
#include <time.h>

using namespace std;

const std::string currentTime() {
time_t now = time(0);
struct tm tstruct;
char buf[80];
tstruct = *localtime(&now);
strftime(buf, sizeof(buf), "%H:%M:%S %P", &tstruct);
return buf;
}

const std::string currentDate() {
time_t now = time(0);
struct tm tstruct;
char buf[80];
tstruct = *localtime(&now);
strftime(buf, sizeof(buf), "%B %A ", &tstruct);
return buf;
}

int main() {
    cout << "\033[2J\033[1;1H"; 
std:cout << "The current time is " << currentTime() << std::endl;
    time_t t = time(0);   // get time now
    struct tm * now = localtime( & t );
    cout << "The current date is " << now->tm_mon + 1 << '-' 
         << (now->tm_mday  + 1) << '-'
         <<  (now->tm_year + 1900) 
         << " " << currentDate() << endl; 

 cout << "Day of month is " << (now->tm_mday) 
      << " and the Month of year is " << (now->tm_mon)+1 << "," << endl;
    cout << "also the day of year is " << (now->tm_yday) 
         << " & our Weekday is " << (now->tm_wday) << "." << endl;
    cout << "The current year is " << (now->tm_year)+1900 << "." 
         << endl;
 return 0;  
}

Questo è un buon esempio, ma la riga 'strftime (buf, sizeof (buf), "% H:% M:% S% P", & tstruct);' deve avere% P convertito in% p (l'ultimo è standard, il maiuscolo causa un'asserzione in MSVC 2015).
Fernando Gonzalez Sanchez,

3

Questo compilato per me su Linux (RHEL) e Windows (x64) indirizzato a g ++ e OpenMP:

#include <ctime>
#include <iostream>
#include <string>
#include <locale>

////////////////////////////////////////////////////////////////////////////////
//
//  Reports a time-stamped update to the console; format is:
//       Name: Update: Year-Month-Day_of_Month Hour:Minute:Second
//
////////////////////////////////////////////////////////////////////////////////
//
//  [string] strName  :  name of the update object
//  [string] strUpdate:  update descripton
//          
////////////////////////////////////////////////////////////////////////////////

void ReportTimeStamp(string strName, string strUpdate)
{
    try
    {
        #ifdef _WIN64
            //  Current time
            const time_t tStart = time(0);
            //  Current time structure
            struct tm tmStart;

            localtime_s(&tmStart, &tStart);

            //  Report
            cout << strName << ": " << strUpdate << ": " << (1900 + tmStart.tm_year) << "-" << tmStart.tm_mon << "-" << tmStart.tm_mday << " " << tmStart.tm_hour << ":" << tmStart.tm_min << ":" << tmStart.tm_sec << "\n\n";
        #else
            //  Current time
            const time_t tStart = time(0);
            //  Current time structure
            struct tm* tmStart;

            tmStart = localtime(&tStart);

            //  Report
            cout << strName << ": " << strUpdate << ": " << (1900 + tmStart->tm_year) << "-" << tmStart->tm_mon << "-" << tmStart->tm_mday << " " << tmStart->tm_hour << ":" << tmStart->tm_min << ":" << tmStart->tm_sec << "\n\n";
        #endif

    }
    catch (exception ex)
    {
        cout << "ERROR [ReportTimeStamp] Exception Code:  " << ex.what() << "\n";
    }

    return;
}

3

È possibile utilizzare il codice seguente per ottenere la data e l' ora correnti del sistema in C ++ :

    #include <iostream>
    #include <time.h> //It may be #include <ctime> or any other header file depending upon
                     // compiler or IDE you're using 
    using namespace std;

    int main() {
       // current date/time based on current system
       time_t now = time(0);

       // convert now to string form
       string dt = ctime(&now);

       cout << "The local date and time is: " << dt << endl;
    return 0;
    }

PS: visita questo sito per ulteriori informazioni.


2

Il ffead-cpp fornisce molteplici classi di utilità per vari compiti, una tale classe è la Data di classe che fornisce un sacco di funzioni a destra dalle operazioni data a data l'aritmetica, c'è anche un timer di classe prevista per le operazioni di sincronizzazione. Puoi dare un'occhiata allo stesso.


2

http://www.cplusplus.com/reference/ctime/strftime/

Questo built-in sembra offrire una serie ragionevole di opzioni.


1
Certo: time_t rawTime; time(&rawTime); struct tm *timeInfo; char buf[80]; timeInfo = localtime(&rawTime); strftime(buf, 80, "%T", timeInfo); questo in particolare mette solo HH: MM: SS. Il mio primo post quindi non sono sicuro di come ottenere il formato del codice corretto. Mi dispiace per quello.
bduhbya,

1

localtime_s () versione:

#include <stdio.h>
#include <time.h>

int main ()
{
  time_t current_time;
  struct tm  local_time;

  time ( &current_time );
  localtime_s(&local_time, &current_time);

  int Year   = local_time.tm_year + 1900;
  int Month  = local_time.tm_mon + 1;
  int Day    = local_time.tm_mday;

  int Hour   = local_time.tm_hour;
  int Min    = local_time.tm_min;
  int Sec    = local_time.tm_sec;

  return 0;
} 

1
#include <iostream>
#include <chrono>
#include <string>
#pragma warning(disable: 4996)
// Ver: C++ 17 
// IDE: Visual Studio
int main() {
    using namespace std; 
    using namespace chrono;
    time_point tp = system_clock::now();
    time_t tt = system_clock::to_time_t(tp);
    cout << "Current time: " << ctime(&tt) << endl;
    return 0;
}

0
#include <Windows.h>

void main()
{
     //Following is a structure to store date / time

SYSTEMTIME SystemTime, LocalTime;

    //To get the local time

int loctime = GetLocalTime(&LocalTime);

    //To get the system time

int systime = GetSystemTime(&SystemTime)

}

5
La domanda richiede multipiattaforma. Windows.h è specifico di Windows e void mainnon è nemmeno standard C / C ++.
derpface

0

Puoi usare boost:

#include <boost/date_time/gregorian/gregorian.hpp>
#include <iostream>
using namespace boost::gregorian;

int main()
{
    date d = day_clock::universal_day();
    std::cout << d.day() << " " << d.month() << " " << d.year();
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.