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 = 23月を意味する)は、前月の最終日(2月)にロールバックします。

はい、それtm_mdayは1ベースであるのに対し、tm_mon0ベースであるのは紛らわしいです。あなたは最終的にそれに慣れます:-)

于 2012-04-24T21:06:01.820 に答える