如何在 C++ 中使用 chrono 根据当前日期和时间生成文件名

问题:

你想在 C++ 中生成一个包含当前日期和时间的文件名(例如用于数据记录)- 例如:

timestamp_example.txt
2023-04-22_19-38-34.csv

解决方案

要在 C++ 中生成包含当前日期和时间的文件名,你可以使用 chrono 库获取当前时间并将其格式化为字符串。以下是显示如何执行此操作的代码片段:

get_filename_by_date.cpp
#include <chrono>
#include <iomanip>
#include <sstream>

std::string GetFilenameByCurrentDate(const char* extension=".bin") {
    // 获取当前时间
    auto now = std::chrono::system_clock::now();

    // 转换为本地时间
    auto localTime = std::chrono::system_clock::to_time_t(now);

    // 将时间戳格式化为字符串
    std::stringstream ss;
    ss << std::put_time(std::localtime(&localTime), "%F_%H-%M-%S") << extension;
    return ss.str();
}

此函数接受一个可选的 extension 参数,指定要使用的文件扩展名(默认为 “.bin”)。它使用 chrono 库获取当前时间(now),将其转换为本地时间(localTime),并格式化为字符串(ss)。put_time 函数用于将时间格式化为 “%F_%H-%M-%S” 格式的字符串,表示 ISO 8601 格式的日期和时间(例如 2023-04-23_19-13-22)。

这将产生如 2023-04-23_19-13-22.bin 的文件名,可用于创建新文件或存储数据到现有文件。通过在文件名中包含时间戳,你可以轻松跟踪文件创建时间并快速识别在特定时间创建的文件。


Check out similar posts by category: C/C++