如何在 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++
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow