-1

tm 構造体オブジェクトがどのように使用されるかについて、少し混乱しています。

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 の加算が出力時間を正しくフォーマットする方法について少し混乱していますか? 助けてくれてありがとう!

4

2 に答える 2

4

マンページから:

       tm_mon 1 月からの月数 (0 から 11 の範囲)。

   tm_year   The number of years since 1900.

strftimeまた、出力用の関数を確認することもできます。

于 2013-01-01T00:50:59.977 に答える
3

これが、tm構造体の値の定義方法です。

  • tm_mon = 1月からの月数(0から11の範囲)。

  • tm_year=1900年からの年数。

開始年を1900にする理由は、2桁の年の値を使用できるようにするためだったと思いますが、それがどれほどうまくいくかは誰もが見てきました。

興味深いことに、1900年は世界的なタイムゾーンが標準になった時期であるため、開始年を設定するのに最適な時期であると考えられた人もいるかもしれません。ただの憶測です。

于 2013-01-01T00:51:39.613 に答える