mktime
time.h:インデックス への移動
ヘッダー ファイル
time.h
カテゴリ
日付/時刻ルーチン
プロトタイプ
time_t mktime(struct tm *t);
説明
時間をカレンダ形式に変換します。
t が指す構造体内の時間を、時刻関数で使用されるのと同じ形式のカレンダ時間に変換します。フィールド tm_sec、tm_min、tm_hour、tm_mday、tm_mon の元の値は、tm 構造体で記述される範囲に制限されません。これらのフィールドは、適切な範囲内になければ、調整されます。フィールド tm_wday と tm_yday の値は、それら以外のフィールドが調整された後で計算されます。
tm_isdst(夏時間)フィールドは、関数 mktime の呼び出し後に正しい値に調整されます。さらに、tm_isdst は tm_hour の値の調整に使用されます。たとえば、tm_isdst の値が 1 でも現在の日付が DST でない場合、mktime は tm_hour を更新し(tm_hour = tm_hour - 1)、tm_isdst を 0 に設定します。
カレンダ時間の許容範囲は、1970 年 1 月 1 日 00 時 00 分 00 秒から 2038 年 1 月 19 日 03 時 14 分 07 秒までです。
戻り値
成功した場合、上記どおりのカレンダ時間を返します。
エラーの場合(カレンダ時間を表すことができない場合)は、-1 を返します。
例
#include <stdio.h> #include <time.h>
char *wday[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday",
"Saturday", "Unknown"}; int main(void) { struct tm time_check; int year, month, day; /*
曜日を求める年、月、日を入力する */ printf("Year: "); scanf("%d",
&year); printf("Month: "); scanf("%d", &month); printf("Day: "); scanf("%d",
&day); /* time_check 構造体にデータを読み込む */ time_check.tm_year = year -
1900; time_check.tm_mon = month - 1; time_check.tm_mday = day; time_check.tm_hour = 0;
time_check.tm_min = 0; time_check.tm_sec = 1; time_check.tm_isdst = -1; /* mktime を呼び出して、構造体の曜日フィールドに値を設定する */ if (mktime(&time_check) == -1)
time_check.tm_wday = 7; /* 曜日を出力する */ printf("That day is a %s\n",
wday[time_check.tm_wday]); return 0; }
移植性
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |
+ |
+ |
+ |