首页 > 解决方案 > 自 0000 年 1 月 1 日以来,哪些 C++ 函数支持以微秒为单位的时间?

问题描述

我在 C++、Visual Studio 2012 和 Windows 7 中工作。我有 2 组数据 - 一组具有常规系统时间,另一组具有自 0 年以来的微秒时间(真正的 0,而不是 1970 年)。我必须找到这两组之间的相关性——所以我需要一些可以进行转换的函数。有任何想法吗?

标签: c++windowstime

解决方案


假设使用公历,这两个历元之间的差异是 62,167,219,200,000,000 微秒。因此,您只需添加/减去此常量即可在这两个数据集之间进行转换。

这个常数是使用这个免费的、开源的、只有头文件的 C++20 chrono preview library计算的。

#include "date/date.h"
#include <chrono>
#include <iostream>

int
main()
{
    using namespace date;
    using namespace std;
    using namespace std::chrono;

    microseconds delta = sys_days{1970_y/1/1} - sys_days{0_y/1/1};
    cout << delta << '\n';
}

输出:

62167219200000000µs

推荐阅读