【发布时间】:2020-09-29 01:16:03
【问题描述】:
我需要计算 Unix 纪元(UTC 时间 1970 年 1 月 1 日 00:00:00)与用户选择的未来某个日期之间的秒数和纳秒数。
到目前为止,这是我通过其他 Stack Overflow 答案找到的:
// seconds and nanoseconds past epoch
auto now = std::chrono::system_clock::now().time_since_epoch();
auto now_ns = std::chrono::duration_cast<std::chrono::nanoseconds>(now);
auto now_sec = std::chrono::duration_cast<std::chrono::seconds>(now);
// output total ns since epoch
qDebug() << now_ns.count() << "ns";
// output total secs since epoch
qDebug() << now_sec.count() << "secs";
auto nano_secs = now_ns.count() - (now_sec.count() * 1000000000);
// output ns minus whole seconds
qDebug() << "nano_secs = " << nano_secs;
使用它,我可以得到我正在寻找的当前日期和时间的结果,但这不是我需要的。假设出于演示目的,未来日期是 2020 年 7 月 1 日 00:00:00 UTC。我该如何计算这个?
【问题讨论】:
-
(now_sec.count() * 1000000000)dont 这样做 - 使用 duration_cast然后做减法。 -
auto nano_secs = now_ns - now_sec;在我看来是合理的(根本没有duration_cast)。