Biblioteka dotyczy tylko czasu, a nie dat, z wyjątkiem system_clock
, który ma możliwość konwersji punktów czasowych na . Używanie dat <chrono>
nie poprawi wiele rzeczy. Mam nadzieję, że otrzymamy coś w rodzaju: chrono::date
w niezbyt odległej przyszłości.
Powiedział, że można użyć <chrono>
w następujący sposób:
#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();
}
Zauważ, że std::localtime
może powodować wyścigi danych. localtime_r
lub podobne funkcje mogą być dostępne na twoich platformach.
Aktualizacja:
Korzystanie z nowej wersji Howard Hinnant na date library można napisać:
#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();
}
ten wypisze coś jak "2015-07-24 05: 15: 34.043473124 UTC".
Na niepowiązanych notatki, wracając const
obiektów stała niepożądana z C++ 11; nie można przesuwać wartości const return z. Usunąłem również ciąg końcowy, ponieważ końcowe const jest ważne tylko dla funkcji składowych i ta funkcja nie musi być członkiem.
Proszę sprawdzić, czy jest już zadane takie pytanie, a jeśli nie, to zapytaj. – legends2k
* Możliwe duplikaty: * http://stackoverflow.com/questions/12346260/c-date-and-time – legends2k
Nie osiągniesz znacznie lepszego z C++ 11. Chrono to więcej informacji na temat czasu (ile czasu zajęło), niż rzeczy typu time-of-day. Możesz jednak sprawdzić Czas na Zwiększenie Daty. Ma bardziej niezawodną funkcję daty i czasu. –