gpt4 book ai didi

c++ - 如何在当前时间的打印输出中获得更高的精度(几分之一秒)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:30 29 4
gpt4 key购买 nike

我已经尝试了几种方法来从 system_clock 打印出时间,但除了整秒之外我什么也得不到:

system_clock::time_point now = system_clock::now();
std::time_t now_c = system_clock::to_time_t(now);

std::cout<<ctime(&now_c);
std::cout<<std::put_time(std::localtime(&now_c), "%T")<<" ";

now() 函数实际上保存的是高精度数据,还是我只是找不到提取该信息进行打印的函数?

注意:我不打算计算时间间隔。我想要几分之一秒的当前时间,并通过cout 将其打印出来。我只是找不到办法做到这一点。

我知道 std::chrono::high_resolution_clock 但也看不到打印出它的 now() 的方法。此外,setprecision 函数对 put_timectime 的输出没有影响。

我得到的答案实际上并没有解决这个问题。

最佳答案

您可以执行以下操作:

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

std::string GetLocalTime() {
auto now(std::chrono::system_clock::now());
auto seconds_since_epoch(
std::chrono::duration_cast<std::chrono::seconds>(now.time_since_epoch()));

// Construct time_t using 'seconds_since_epoch' rather than 'now' since it is
// implementation-defined whether the value is rounded or truncated.
std::time_t now_t(
std::chrono::system_clock::to_time_t(
std::chrono::system_clock::time_point(seconds_since_epoch)));

char temp[10];
if (!std::strftime(temp, 10, "%H:%M:%S.", std::localtime(&now_t)))
return "";

return std::string(temp) +
std::to_string((now.time_since_epoch() - seconds_since_epoch).count());
}

int main() {
std::cout << GetLocalTime() << '\n';
return 0;
}

关于c++ - 如何在当前时间的打印输出中获得更高的精度(几分之一秒)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15845505/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com