C言語 システム時刻を日本時間(年月日)構造体に変換 - time.h - [ localtime ]

2008.12.01 Monday | by LRESULT


ステム時刻を地域時間(日本時間)用の構造体に変換するには、localtime()を使います。

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


localtime
書式 struct tm* localtime( const time_t *timer )
機能 システム時刻を地域時間用の構造体に変換
引数 const time_t *timer : time()で取得したシステム時刻
戻り値 日本時間に変換された、struct tm型の構造体で返します。



struct tm型の構造体
int tm_sec 秒[0〜61](最大2秒のうるう秒を含む為)
int tm_min 分[0〜59]
int tm_hour 時[0〜23]
int tm_mday 日[1〜31]
int tm_mon 月[0〜11](-1された月数)
int tm_year 年(1900からの経過年数)
int tm_wday 曜日[0〜6](日:0 月:1 火:2 水:3 木:4 金:5 土:6)
int tm_yday 1月1日からの経過日数[0〜365]
int tm_isdst 夏時間の有無(0:なし 正の値:夏時間)






サンプルコード
現在のシステム時刻から、
今日の年月日と時刻、曜日、経過日数などを表示してみます。

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

int main(void)
{
  time_t now;
  struct tm *ltm;

  time( &now );
  ltm = localtime( &now );

  printf( "%5d : [年]¥n", ltm->tm_year + 1900 );
  printf( "%5d : [月]¥n", ltm->tm_mon + 1 );
  printf( "%5d : [日]¥n", ltm->tm_mday );
  printf( "%5d : [時]¥n", ltm->tm_hour );
  printf( "%5d : [分]¥n", ltm->tm_min );
  printf( "%5d : [秒]¥n", ltm->tm_sec );
  printf( "%5d : [曜日]¥n", ltm->tm_wday );
  printf( "%5d : [経過日数]¥n", ltm->tm_yday );
  printf( "%5d : [夏時間の有無]¥n", ltm->tm_isdst );

  return 0;
}




結果
 2008 : [年]
   12 : [月]
    1 : [日]
   22 : [時]
   11 : [分]
   59 : [秒]
    1 : [曜日]
  335 : [経過日数]
    0 : [夏時間の有無]
と、こんな感じで表示されます。

年数は、+1900して、月数は+1する必要があります。
曜日は、1なので月曜日ですね。
カレンダーなんかも作れそうです。

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


コメントする











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

トラックバック機能は終了しました。

トラックバック