如何使用fmt库打印含小数秒(如毫秒)的当前时间
实现亚秒级精度的时间打印(毫秒级)
问题背景
现有如下C++代码:
#include <chrono> #include <fmt/format.h> #include <fmt/chrono.h> ... auto now = std::chrono::system_clock::now(); fmt::print("The time is: {:%Y-%m-%d %H:%M:%S}\n", now);
该代码输出结果为:
The time is: 2023-01-02 15:51:23
现需修改代码,实现**亚秒级精度(如毫秒)**的时间打印,期望输出格式如下:
The time is: 2023-01-02 15:51:23.753
修改方案
只需在fmt的格式字符串中添加.%3f即可实现毫秒级精度打印,其中%3f表示保留3位小数的秒数(对应毫秒精度)。
std::chrono::system_clock::now()返回的时间点默认携带亚秒级精度,fmt库会自动提取对应精度信息,无需额外转换时间点类型。
修改后的完整代码示例
#include <chrono> #include <fmt/format.h> #include <fmt/chrono.h> int main() { auto now = std::chrono::system_clock::now(); // 添加.%3f来打印毫秒级精度 fmt::print("The time is: {:%Y-%m-%d %H:%M:%S.%3f}\n", now); return 0; }
扩展说明
- 若需更高精度,比如微秒,可将
%3f改为%6f;纳秒则用%9f - 格式符中的
f对应秒的小数部分,fmt会根据时间点的实际精度自动填充,不足位数补0
内容的提问来源于stack exchange,提问作者Rob N
相关产品推荐
相关产品推荐

