将日期转换为字符串

C++:
将日期转换为字符串

How to: (如何操作:)

#include <iostream>
#include <iomanip>
#include <sstream>
#include <ctime>

int main() {
    std::time_t t = std::time(nullptr);   // 获取当前时间
    std::tm* tm_ptr = std::localtime(&t); // 转换为本地时间

    // 创建一个输出字符串流
    std::ostringstream date_stream;

    // 使用strftime来格式化日期
    char buffer[80];
    std::strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", tm_ptr);
    
    // 将格式化的字符串输出到字符串流
    date_stream << buffer;

    // 从字符串流获取字符串
    std::string date_str = date_stream.str();

    std::cout << "Formatted Date String: " << date_str << std::endl;

    return 0;
}

输出样例:

Formatted Date String: 2023-03-15 12:45:30

Deep Dive (深入探讨)

  • 历史: C++11之前,日期和时间的处理通常需要自行实现或使用第三方库。C++标准库直到C++11引入了<chrono>库后,时间处理才变得简单可靠。
  • 替代方案: <chrono>库提供了基于现代C++实践的时间处理功能。但是,至今仍然有程序员使用<ctime>库处理日期时间。
  • 实现细节: 使用std::ostringstream可以灵活地创建需要的字符串格式。可依据需要使用std::put_time(tm_ptr, "%Y-%m-%d %H:%M:%S")代替strftime

See Also (参见)