如何找到两个日期之间以秒和纳秒为单位的时间差异?
How to find difference in time in seconds and nanoseconds between two dates?
我需要计算 Unix 纪元(00:00:00 1970 年 1 月 1 日 UTC)与用户将要 select.
的某个日期之间的秒数和纳秒数
这是我目前通过其他 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;
使用它,我可以获得我正在寻找的当前日期和时间的结果,但这不是我需要的。出于演示目的,假设未来日期是 00:00:00 2020 年 7 月 1 日 UTC。我该如何计算?
在 C++20 中,这看起来像:
using namespace std::chrono;
nanoseconds now_ns = sys_days{July/1/2020}.time_since_epoch();
auto now_sec = duration_cast<seconds>(now_ns);
now_ns -= now_sec;
std::cout << now_sec << ", " << now_ns << '\n';
输出:
1593561600s, 0ns
今天要找到可以做到这一点的 C++20 std::lib 会很困难。然而 here is a free, open-source preview of C++20 <chrono>
.
只需添加 #include "date/date.h"
和 using namespace date;
,就可以了。
如果你不想使用这个第 3 方 header,here is the algorithm to convert a {y, m, d}
triple into a count of days since the Unix epoch. Indeed, all sys_days{July/1/2020}
does is call days_from_civil
并把它放入一个基于 [=19 的 days-precision chrono::time_point
=].从那时起,C++11/14 版本的 <chrono>
完成了所有工作。
None 以上计算取决于您计算机的本地时区设置。
我需要计算 Unix 纪元(00:00:00 1970 年 1 月 1 日 UTC)与用户将要 select.
的某个日期之间的秒数和纳秒数这是我目前通过其他 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;
使用它,我可以获得我正在寻找的当前日期和时间的结果,但这不是我需要的。出于演示目的,假设未来日期是 00:00:00 2020 年 7 月 1 日 UTC。我该如何计算?
在 C++20 中,这看起来像:
using namespace std::chrono;
nanoseconds now_ns = sys_days{July/1/2020}.time_since_epoch();
auto now_sec = duration_cast<seconds>(now_ns);
now_ns -= now_sec;
std::cout << now_sec << ", " << now_ns << '\n';
输出:
1593561600s, 0ns
今天要找到可以做到这一点的 C++20 std::lib 会很困难。然而 here is a free, open-source preview of C++20 <chrono>
.
只需添加 #include "date/date.h"
和 using namespace date;
,就可以了。
如果你不想使用这个第 3 方 header,here is the algorithm to convert a {y, m, d}
triple into a count of days since the Unix epoch. Indeed, all sys_days{July/1/2020}
does is call days_from_civil
并把它放入一个基于 [=19 的 days-precision chrono::time_point
=].从那时起,C++11/14 版本的 <chrono>
完成了所有工作。
None 以上计算取决于您计算机的本地时区设置。