我正在使用属性 c++11
库,它有自己的 Datetime
实现,它们的实现可以简化为包含时间部分的结构高达纳秒。
一个粗略的例子如下:
struct custom_time_t {
unsigned year;
unsigned month;
unsigned day;
unsigned hour;
.......
long long nanoseconds;
}
我想从这个自定义对象中获取 epoch
,但也以纳秒级分辨率 - 类似于 gettimeofday
。
通常使用 std::chrono
和 std::tm
将纪元提高到秒,但如何获得自 纪元
以来的纳秒还有吗?
最佳答案
最简单的方法是使用这个 preview of the C++20 <chrono>
library .
#include "date/date.h"
#include <chrono>
std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds>
to_time_point(custom_time_t const& t)
{
using namespace date;
using namespace std::chrono;
return sys_days{year(t.year)/t.month/t.day} + hours(t.hour) + ...
+ nanoseconds{t.nanoseconds};
}
返回类型对于 system_clock
具有正确的值基础time_point
.如果您使用 .time_since_epoch().count()
从中提取值, 你会得到 nanoseconds
的数字自(或之前)1970-01-01 00:00:00.000000000 UTC。
也可以使用 auto
作为 C++14 中的返回类型,但我想弄清楚返回类型是什么。此返回类型还有一个类型别名:sys_time<nanoseconds>
.
关于c++ - 纳秒分辨率到纳秒纪元的日历时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57069030/