【发布时间】:2017-03-21 06:40:16
【问题描述】:
我想获取特定日期的 uint64_t 纪元以来的纳秒数,是否有任何 c++ 库中的函数来获取它。
【问题讨论】:
-
boost datetime 应该有。不确定在 ns 分辨率下可以用 64 位表示什么日期范围
我想获取特定日期的 uint64_t 纪元以来的纳秒数,是否有任何 c++ 库中的函数来获取它。
【问题讨论】:
您可以使用 Howard Hinnant's free, open-source date/time library 将 std::chrono 扩展到日历的真实部分:
#include "date.h"
#include <iostream>
int
main()
{
using namespace date;
using namespace std::chrono_literals;
uint64_t k = (sys_days{2017_y/mar/21} + 10h + 27min + 5s +
123456789ns).time_since_epoch().count();
std::cout << k << '\n';
}
输出:
1490092025123456789
【讨论】:
如果您有权访问 C++ 11 库,请查看 std::chrono 库。您可以使用它来获取自 Unix 纪元以来的毫秒数,如下所示:
#include <chrono>
// ...
using namespace std::chrono;
milliseconds ms = duration_cast< milliseconds >(
system_clock::now().time_since_epoch()
);
【讨论】: