tm结构对象混淆

时间:2013-01-01 00:48:57

标签: c struct

如果我这样做,我对如何使用tm struct对象感到困惑;

printf("The current date is %d-%d-%d\n", now.tm_mon, now.tm_mday, now.tm_year);

我的输出是;

The current date is 11-31-112

但是当我这样做的时候;

printf("The current date is %d-%d-%d\n", now.tm_mon + 1, now.tm_mday, now.tm_year 
+ 1900);

我的输出是;

The current date is 12-31-2012

我有点困惑如何添加+1,+ 1900正确格式化输出时间?提前感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

从联系手册:

  

tm_mon自1月以来的月数,范围为0到11。

   tm_year   The number of years since 1900.

您可能还想查看输出的strftime函数。

答案 1 :(得分:3)

这就是tm结构中的值是defined

  • tm_mon =自1月以来的月数,范围为0至11.

  • tm_year =自1900年以来的年数。

我怀疑开始年份是1900年的原因是为了能够使用两位数的年份值,我们都看到了这一点的成功程度。

一个有趣的旁注是,1900年大约是全球timezones成为标准的时间,所以也许人们认为这是设定开始年份的好时机。只是猜测。