将 `std::chrono::locale_time` 发送到 C++ 流时如何控制显示精度?

Thr*_*r57 4 c++ c++-chrono c++20

我对此几乎感到满意:

const auto time = std::chrono::current_zone()->to_local(std::chrono::system_clock::now());
std::cout << time;
Run Code Online (Sandbox Code Playgroud)

它打印:

2023-07-26 21:08:47.2889025
Run Code Online (Sandbox Code Playgroud)

这很好,但我希望它打印的小数位数稍微少一些,例如:

2023-07-26 21:08:47.289
Run Code Online (Sandbox Code Playgroud)

是否有一些iomanip类似的方法来指定所需的精度?就像是:

std::cout << std::chrono::setprecision(3) << time;
Run Code Online (Sandbox Code Playgroud)

How*_*ant 5

只是当您调用、存储它或打印它时floor:millisecondsnow

const auto time = std::chrono::current_zone()->to_local(std::chrono::system_clock::now());
std::cout << std::chrono::floor<std::chrono::milliseconds>(time);
Run Code Online (Sandbox Code Playgroud)

或者根据您的舍入偏好使用round或。ceil