我已经尝试了this以及我在网上找到的其他代码,但它们没有用。我的IDE是Xcode。 编辑:当我尝试链接上的代码时,变量long long microseconds总是返回0。 我想以这种方式打印时间戳:(小时:分钟:微秒)。例如,15:17:09:134613464312。
答案 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;
}
这将打印当前的微秒计数。
小时:分钟:秒很容易。