在struct tm中操作tm_mon?

时间:2015-02-03 13:43:50

标签: c

我无法理解这个程序,即tm_mon +1部分。

我是C的新手,我通常会为我在我所关注的课程书中设置的任何挑战编写我自己的小程序,但我不得不与其他人协商解决这个问题(它是课程书和他们的代码的混合,所以不是我的)我不明白为什么+1添加到tm_mon。我理解tm_mon = January,但我不清楚+1是如何产生影响的,为什么它是+1而不是+ 2或任何其他数字!

该程序旨在告诉您400万秒内的日期。

include <stdio.h>
#include <time.h>

int main(int argc, const char * argv[])
{

    long secondsToFuture = time(NULL) + 4000000;
    struct tm futureTime;
    localtime_r(&secondsToFuture, &futureTime);

    printf("The date in 4,000,000 seconds will be %d-%d-%d\n", futureTime.tm_mon + 1, futureTime.tm_mday, futureTime.tm_year + 1900);

    return 0;
}

感谢任何帮助,因为我有点困惑于此。

1 个答案:

答案 0 :(得分:1)

看看下表。正如你所看到的,tm_mon是一个从0 = 1月到11 = 12月的值。

enter image description here

&#39; *&#39; tm_sec通常为0-59。额外的范围是适应某些系统的闰秒。

修改

然后在你的情况下没有+1 ,如果是2015年1月1日,实际输出将是

The date in 4,000,000 seconds will be 0/1/2015

+1 将推动输出

The date in 4,000,000 seconds will be 1/1/2015