You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何控制std::chrono::local_time输出到C++流的显示精度?

控制C++ chrono本地时间输出的小数精度

有两种简洁的方式可以实现你想要的3位小数精度输出:

1. 对时间点进行精度四舍五入

通过std::chrono::round将系统时间四舍五入到毫秒级(对应3位小数的秒),再转换为本地时间输出:

#include <chrono>
#include <iostream>

int main() {
    auto now = std::chrono::system_clock::now();
    // 四舍五入到毫秒精度
    auto rounded_time = std::chrono::round<std::chrono::milliseconds>(now);
    auto local_time = std::chrono::current_zone()->to_local(rounded_time);
    std::cout << local_time << '\n';
}

输出结果会自动保留3位小数,完全符合你的需求。

2. 直接指定格式化输出(C++20+)

利用std::format自定义输出格式,精准控制秒的小数位数:

#include <chrono>
#include <iostream>
#include <format>

int main() {
    auto local_time = std::chrono::current_zone()->to_local(std::chrono::system_clock::now());
    // 格式字符串中%.3f表示秒的小数部分保留3位
    std::cout << std::format("{:%Y-%m-%d %H:%M:%.3f}", local_time) << '\n';
}

这种方式更灵活,你可以修改%.3f中的数字调整小数位数,比如改成%.2f就保留2位小数。

注意事项

以上两种方法都需要C++20或更高版本的标准支持,编译时需开启对应标准(例如GCC编译时添加-std=c++20参数)。

内容的提问来源于stack exchange,提问作者ThreeStarProgrammer57

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 18:55:00