C言語 システム時刻の取得 - time.h - [ time ]

2008.11.28 Friday | by LRESULT


ステム時刻を取得するには、time()を使います。

この、システム時刻とは、一般的にグリニッジ標準時の1970年1月1日00:00:00を
基準とした、現在までの経過時間()のことです。


time
書式 time_t time( time_t *timer )
機能 システム時刻の取得
引数 time_t *timer : システム時刻(秒)を格納
戻り値 成功すると、システム時刻を返し、
失敗すると、-1を返します。
また、引数(timer)にNULLを指定すると、システム時刻を返します。

time_t型は、一般的にlong型でtypedefされており、時刻を表す型です。
t = time( NULL );と、time( &t ); の結果(t)は同じです。





サンプルコード
time()の戻り値は、本当に1970年からの秒数なのか?
と、いうわけでザックリと経過秒から何年ほどか調べてみます。
#include <stdio.h>
#include <time.h>

int main(void)
{
  time_t sec;
  int yy, dd, hh, mm;

  time( &sec );
  printf( "1970年から%d[秒]経過...¥n", sec );

  mm = sec / 60;
  printf( "1970年から%d[分]経過...¥n", mm );

  hh = mm / 60;
  printf( "1970年から%d[時間]経過...¥n", hh );

  dd = hh / 24;
  printf( "1970年から%d[日]経過...¥n", dd );

  yy = dd / 365;
  printf( "1970年から%d[年]経過...¥n", yy );

  return 0;
}



結果
1970年から1227968904[秒]経過...
1970年から20466148[分]経過...
1970年から341102[時間]経過...
1970年から14212[日]経過...
1970年から38[年]経過...
と、表示されます。

確かに38年経過してます。今が2008年なので間違ってないです。
几帳面ですね。

カテゴリ:C言語 time.h | 22:30 | comments(2) | trackbacks(0) | -


コメント

通りすがりです。

純粋に365で割っていますが、
本来はうるう年計算をしないと若干のズレを生じさせる場合があります。

12月31日あたりにやるとズレるでしょう。
うるう年であれば既に365日経っているので、1年とみなしてしまいますし、それまで経過した1970年からのうるう年の日数だけズレが生じます。

…些細なズレですが。

| 名を成す事すら出来ない程度の人 | 2010/05/18 2:04 PM |

コメント

管理者の承認待ちコメントです。

| - | 2015/12/10 11:15 AM |

コメントする











この記事のトラックバックURL

http://simd.jugem.jp/trackback/146

トラックバック