如何在C ++中获得以微秒为单位的时间戳?

时间:2015-06-29 05:35:35

标签: c++ timestamp

我已经尝试了this以及我在网上找到的其他代码,但它们没有用。我的IDE是Xcode。 编辑:当我尝试链接上的代码时,变量long long microseconds总是返回0。 我想以这种方式打印时间戳:(小时:分钟:微秒)。例如,15:17:09:134613464312。

1 个答案:

答案 0 :(得分:0)

您使用的方法是正确的。

如果两个now()调用之间的代码持续时间小于一微秒,则微秒将始终为零,因为该数字不是浮点数。如果你总是为零,那意味着你需要更高的分辨率(尝试纳秒)。

顺便说一句,如果你只是想要时间戳,你不想使用这个代码,因为它是为了计算两个时间点之间的经过时间。你可以尝试这样的事情:

auto microseconds = std::chrono::duration_cast<std::chrono::microseconds>
    (std::chrono::high_resolution_clock::now().time_since_epoch()).count();

这实际上是时间戳而不是持续时间。

编辑:要获得当前的微秒数,您可以执行以下操作:

#include <iostream>
#include <chrono>
#include <ctime>

using namespace std;
using namespace std::chrono;

using days = duration<int, ratio_multiply<hours::period, ratio<24> >::type>;

int main() {
    system_clock::time_point now = system_clock::now();
    system_clock::duration tp = now.time_since_epoch();
    days d = duration_cast<days>(tp);
    tp -= d;
    hours h = duration_cast<hours>(tp);
    tp -= h;
    minutes m = duration_cast<minutes>(tp);
    tp -= m;
    seconds s = duration_cast<seconds>(tp);
    tp -= s;
    cout << tp.count() << "\n";
    return 0;
}

这将打印当前的微秒计数。

小时:分钟:秒很容易。