📌  相关文章
📜  如何在 C++ 中以字符串形式获取时间 - C++ (1)

📅  最后修改于: 2023-12-03 15:08:34.845000             🧑  作者: Mango

如何在 C++ 中以字符串形式获取时间

在 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 库的使用方法。