📅  最后修改于: 2023-12-03 15:08:34.845000             🧑  作者: Mango
在 C++ 中,可以使用 std::chrono
库提供的函数来获取时间。这个库包含了一些基于时间的工具,例如 std::chrono::time_point
类型和 std::chrono::duration
类型。下面将分别介绍如何使用这些类型和函数来以字符串形式获取时间。
以下是一个使用 std::chrono
库提供的函数来获取当前日期和时间的示例代码:
#include <iostream>
#include <chrono>
#include <ctime>
int main()
{
// 获取当前时间点
auto now = std::chrono::system_clock::now();
// 将当前时间点转换为 C 时间结构
auto now_c = std::chrono::system_clock::to_time_t(now);
// 将 C 时间结构转换为本地时间
auto local = std::localtime(&now_c);
// 将本地时间转换为字符串格式
char buffer[80];
std::strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", local);
// 输出时间字符串
std::cout << "Current time: " << buffer << '\n';
return 0;
}
下面是对代码中各个部分的解释:
// 获取当前时间点
auto now = std::chrono::system_clock::now();
使用 std::chrono::system_clock::now()
函数获取当前时间点。
// 将当前时间点转换为 C 时间结构
auto now_c = std::chrono::system_clock::to_time_t(now);
使用 std::chrono::system_clock::to_time_t()
函数将 now
转换为 C 时间结构。
// 将 C 时间结构转换为本地时间
auto local = std::localtime(&now_c);
使用 std::localtime()
函数将 now_c
转换为本地时间。
// 将本地时间转换为字符串格式
char buffer[80];
std::strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", local);
使用 std::strftime()
函数将 local
转换为字符串格式。第一个参数 buffer
是存储字符串的缓冲区,第二个参数 80
是缓冲区的长度,第三个参数 "%Y-%m-%d %H:%M:%S"
是时间格式字符串,第四个参数 local
是要转换的时间结构。
// 输出时间字符串
std::cout << "Current time: " << buffer << '\n';
最后,将时间字符串输出到标准输出流。
在本文中,我们介绍了如何使用 std::chrono
库提供的函数来获取时间并以字符串形式表示。通过分步骤解释示例代码,我们可以更加深入地理解 std::chrono
库的使用方法。