我已经尝试了几种方法来打印时间,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")<<" ";
Run Code Online (Sandbox Code Playgroud)
该now()函数实际上是否包含高精度数据,还是我无法找到提取该信息进行打印的函数?
注意:我不打算计算时间间隔.我希望当前时间只有几分之一秒,并通过它打印出来cout.我找不到办法做到这一点.
我知道std::chrono::high_resolution_clock但也看不出打印它的方法now().此外,该setprecision功能对put_time或的输出没有影响ctime.
我一直在得到实际上没有解决这个问题的答案.
您可以执行以下操作:
#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;
}
Run Code Online (Sandbox Code Playgroud)