#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返回month -1,而不是传递的原始月份。
发布于 2012-04-25 05:06:02
因为你设置了tm_mday = 0。这个月的“零”(tm_mon = 2表示三月)回滚到前一个月的最后一天(二月)。
是的,tm_mday是基于1的,而tm_mon是基于0的,这是令人困惑的。你最终会习惯的:-)
https://stackoverflow.com/questions/10305937
复制相似问题