首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在传递给mktime时,要将月份设置为实际月份?

为什么在传递给mktime时,要将月份设置为实际月份?
EN

Stack Overflow用户
提问于 2012-04-25 05:02:01
回答 1查看 153关注 0票数 1
代码语言:javascript
复制
#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,而不是传递的原始月份。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-25 05:06:02

因为你设置了tm_mday = 0。这个月的“零”(tm_mon = 2表示三月)回滚到前一个月的最后一天(二月)。

是的,tm_mday是基于1的,而tm_mon是基于0的,这是令人困惑的。你最终会习惯的:-)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10305937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档