La libreria <chrono>
si occupa solo di ora e non di date, ad eccezione dello system_clock
che ha la capacità di convertire i suoi punti di tempo in time_t
. Quindi usare <chrono>
per le date non migliorerà molto le cose. Speriamo di ottenere qualcosa come chrono::date
in un futuro non troppo lontano.
Detto questo, è possibile utilizzare <chrono>
nel seguente modo:
#include <chrono> // chrono::system_clock
#include <ctime> // localtime
#include <sstream> // stringstream
#include <iomanip> // put_time
#include <string> // string
std::string return_current_time_and_date()
{
auto now = std::chrono::system_clock::now();
auto in_time_t = std::chrono::system_clock::to_time_t(now);
std::stringstream ss;
ss << std::put_time(std::localtime(&in_time_t), "%Y-%m-%d %X");
return ss.str();
}
noti che std::localtime
può provocare gare di dati. localtime_r
o funzioni simili potrebbero essere disponibili sulle tue piattaforme.
Aggiornamento:
Utilizzo di una nuova versione di Howard Hinnant di date library si può scrivere:
#include "date.h"
#include <chrono>
#include <string>
#include <sstream>
std::string return_current_time_and_date() {
auto now = std::chrono::system_clock::now();
auto today = date::floor<days>(now);
std::stringstream ss;
ss << today << ' ' << date::make_time(now - today) << " UTC";
return ss.str();
}
questo stampa qualcosa come "2015/07/24 05: 15: 34,043,473124 millions UTC".
Su una nota indipendenti, tornando const
oggetti è diventato indesiderabile con C++ 11; i valori di ritorno const non possono essere spostati da. Ho rimosso anche il const finale perché il const finale è valido solo per le funzioni membro e questa funzione non ha bisogno di essere membro.
Si prega di cercare se c'è già una domanda del genere e se non poi chiedere. – legends2k
* Possibile duplicato: * http://stackoverflow.com/questions/12346260/c-date-and-time – legends2k
Non riuscirai a migliorare molto con C++ 11. chrono ha più a che fare con il tempismo (da quanto tempo ha bisogno di qualcosa) rispetto alle cose tipo giorno-di-giorno. Potresti controllare Boost Date Time, però. Ha una funzionalità data e ora più robusta. –