乐闻世界logo
搜索文章和话题

Outputting Date and Time in C++ using std:: chrono

6 个月前提问
5 个月前修改
浏览次数79

1个答案

1

在 C++ 中,std::chrono 库提供了用于日期和时间处理的强大工具。然而,std::chrono 本身专注于时间点(time_point)和持续时间(duration)的测量,而不直接处理日历日期和时钟时间的格式化输出。从 C++20 开始,我们可以使用 std::chrono 中的新特性来处理日期和时间的格式化输出,但在 C++20 之前,我们通常结合使用 std::chrono 和其他库,如 <ctime>,来输出日期和时间。

以下是一个示例,展示如何在 C++11 中使用 std::chrono<ctime> 来获取并输出当前日期和时间:

cpp
#include <iostream> #include <chrono> #include <ctime> int main() { // 获取当前时间点 std::chrono::system_clock::time_point now = std::chrono::system_clock::now(); // 转换为time_t以便我们可以转换为可读的格式 std::time_t now_time_t = std::chrono::system_clock::to_time_t(now); // 转换为本地时间 std::tm* now_tm = std::localtime(&now_time_t); // 输出当前日期和时间 std::cout << "Current date and time: " << 1900 + now_tm->tm_year << '-' // 年份 << 1 + now_tm->tm_mon << '-' // 月份 << now_tm->tm_mday << ' ' // 日 << now_tm->tm_hour << ':' // 小时 << now_tm->tm_min << ':' // 分钟 << now_tm->tm_sec << std::endl; // 秒 return 0; }

在这个例子中,我们首先使用 std::chrono::system_clock::now() 获取当前的时间点。然后,我们使用 std::chrono::system_clock::to_time_t() 将时间点转换为 time_t 类型,这种类型更容易转换为人类可读的格式。使用 std::localtime()time_t 转换为 std::tm 结构,该结构包含日历日期和时间的详细分解。

输出示例如下:

shell
Current date and time: 2023-9-24 14:35:22

这种方法结合了 std::chrono 的高精度时间点测量和传统 C 库的时间格式化功能。对于需要 C++20 的新特性,可以使用 std::format 来直接格式化 std::chrono 类型,这使得代码更简洁、直接。

2024年6月29日 12:07 回复

你的答案