C ++ boost :: chrono vs std:从epoch开始的chrono时间(获取当前系统时间)

时间:2015-04-12 13:03:06

标签: c++ c++11 boost window

我尝试使用boost / chrono .... 使用boost :: chrono :: high_resolution_clock :: now()。time_since_epoch()
我无法获得当前的系统时间,而是获得Thu Jan 01 09:53:53 1970 ...但是使用std :: chrono我能够获得正确的系统时间。

如何使用与std :: chrono相同的boost / chrono获取当前系统时间?

2 个答案:

答案 0 :(得分:0)

要获得系统时间,请使用system_clock而不是high_resolution_clock

在Boost或标准库中,无法保证high_resolution_clock将使用与系统时钟相同的纪元。

答案 1 :(得分:0)

使用简单的数学

boost::posix_time::ptime const time_epoch(boost::gregorian::date(1970, 1, 1));

auto ms = (boost::posix_time::microsec_clock::local_time() - time_epoch).total_microseconds();
std::cout << "microseconds: " << ms << "\n";

boost::posix_time::ptime now = time_epoch + boost::posix_time::microseconds(ms);
std::cout << boost::posix_time::to_iso_string(now);

更多样本: