为什么我的strftime()方法的年份没有输出我期望的

时间:2014-06-09 20:18:59

标签: c++ c++11 strftime

我正在尝试将日期转换为我想要的格式的时间,并且它会产生意外的输出。

struct tm dateTime = {0};
char buffer[80]= {0};

dateTime.tm_year = 2014;

dateTime.tm_mon = 4;
dateTime.tm_mday =17;

strftime(buffer, _countof(buffer), "%d-%b-%Y", &dateTime);
  • 我希望看到17-May-2014,但我会看到17-May-3914

  • 我觉得我可能会遗漏一些东西,但我无法弄清楚是什么。有什么想法吗?

2 个答案:

答案 0 :(得分:9)

tm_year拥有自1900年以来的年数。

答案 1 :(得分:1)

您应该使用dateTime.tm_year = 2014-1900; 1900值是tm的校准值 - 它存储1900年后的年数。