1
#include <time.h>
#include <iostream>
int main()
{

        struct tm dayofmonth = {0};
        int iYear = 2012;
        int iMonth = 2; // February

        dayofmonth.tm_year = iYear - 1900;
        dayofmonth.tm_mon =  iMonth;
        dayofmonth.tm_mday = 0;
        dayofmonth.tm_isdst = 0;

        mktime(&dayofmonth);

        std::cout << "Number of days for the month " << dayofmonth.tm_mon << " is " << dayofmonth.tm_mday << std::endl;

}

需要编写一个简单的例程,以查找给定月份的天数。但是,对于 mktime,我为什么要传递实际的月份编号而不是月份编号 -1。

更令人困惑的是,在调用 mktime 之后,tm_mon 返回月份 -1 而不是传递的原始月份。

4

1 回答 1

6

因为你设置了tm_mday = 0. 本月的“零号”(tm_mon = 2指三月)回滚到上个月(二月)的最后一天。

是的,令人困惑的是,tm_mday从 1 开始,而tm_mon从 0 开始。你最终会习惯的:-)

于 2012-04-24T21:06:01.820 回答