C言語 struct tm構造体をtime_t型に変換 - time.h - [ mktime ]

2008.12.03 Wednesday | by LRESULT


struct tm構造体を time_t型に変換するには、mktime()を使います。


mktime
書式 time_t mktime( struct tm *stm )
機能 struct tm構造体を time_t型に変換
引数 struct tm *stm : 変換元となるstruct tm型の構造体
戻り値 成功すると、time_t型に変換された値を返し、
失敗すると、-1を返します。

struct tm型構造体のメンバである、曜日(tm_wday)経過日数(tm_yday)は、
  その他の年月日のメンバから計算される為、設定する必要はありません。





サンプルコード
指定した日付が何曜日なのかを調べる為に、
struct tm構造体に年月日を設定し、time_t型に変換後、
localtime()で、もう一度変換して曜日を表示します。
#include <stdio.h>
#include <time.h>

int main(void)
{
  time_t tim;
  struct tm stm1;
  struct tm *stm2;

  stm1.tm_year = 2008 - 1900;
  stm1.tm_mon  = 12 - 1;
  stm1.tm_mday = 3;
  stm1.tm_hour = 0;
  stm1.tm_min  = 0;
  stm1.tm_sec  = 0;

  tim = mktime( &stm1 );
  printf( "%d¥n", tim );

  stm2 = localtime( &tim );
  printf( "%d¥n", stm2->tm_wday );

  return 0;
}



結果
1228230000
3
と、表示されます。

つまり、2008年12月3日は、水曜日である。(tm_wday=3で水曜)
ということが分かります。なにかと使えそうですね。
今回は、曜日を調べるだけですので時刻は00:00:00を基準としています。

変換するには、年月日と時刻の設定が必要になります。

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


コメントする











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

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

トラックバック