C言語 struct tm構造体をtime_t型に変換 - time.h - [ mktime ]
2008.12.03 Wednesday | by LRESULT
struct tm構造体を time_t型に変換するには、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を基準としています。 変換するには、年月日と時刻の設定が必要になります。 |