C++ 转换日期格式

use*_*171 2 c++ format date data-conversion

我想转换一个int日期,如:

20111201

string

01DEC2011

是否有内置于 C++ 中的快速日期格式转换(或者我可以执行的 bash 系统命令)来执行此操作,或者我是否一直在进行切换?

goj*_*oji 5

您可以使用 strptime 将字符串转换为 struct tm,然后使用 strftime 重新格式化它:

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

int main()
{
  std::ostringstream date1;
  date1 << 20111201;

  struct tm tm;
  strptime(date1.str().c_str(), "%Y%m%d", &tm);

  char date2[10];
  strftime(date2, sizeof(date2), "%d%b%Y", &tm);

  std::cout << date1.str() << " -> " << date2 << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

20111201 -> 01Dec2011
Run Code Online (Sandbox Code Playgroud)

如果有必要,只需要将 Dec 转换为大写。