フォーマット
#include <time.h> time_t mktime(struct tm *time);
言語レベル: ANSI
スレッド・セーフ: はい。
ロケール依存: この関数の振る舞いは、現行ロケールの LC_TOD カテゴリーの影響を受ける可能性があります。
説明
mktime() 関数は、time が指す保管済みの tm 構造体 (ジョブ地方時として想定) を、別の time 関数の使用に適した time_t 構造体に変換します。 変換後は、time_t 構造体は協定世界時 (UTC) であるとみなされます。この変換を行うため、mktime() はローカル時間帯および夏時間 (DST) の現行ロケール設定をチェックします。 これらの値が現行ロケールで未設定の場合、mktime() はローカル時間帯および夏時間 (DST) の設定を現行ジョブから取得します。 DST がロケールで設定済みでも、時間帯情報が未設定の場合は、ロケール内の DST 情報は無視されます。 mktime() は次に現行の時間帯を使用して、UTC を判別します。
構造体のエレメントによっては、time が指す値が gmtime() 用に表示される範囲に制限されないものもあります。
mktime() に渡される tm_wday と tm_yday の値は無視され、戻りでこれらの正しい値が割り当てられます。
tm_isdst の値が正であるか 0 であるかにより、mktime() は、指定した時間で DST が有効になっているかいないかを最初に推定します。 tm_isdst が負の値の場合、 mktime() は、指定された時間で DST が有効になっているかどうかについて、判別を試みます。
戻り値
mktime() 関数は、型 time_t を持つ協定世界時 (UTC) を戻します。協定世界時を表示できない場合、値 (time_t)(-1) は戻ります。
mktime() の使用例
この例では、現在日付から 40 日と 16 時間後の曜日を出力します。
#include <stdio.h> #include <time.h> char *wday[] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; int main(void) { time_t t1, t3; struct tm *t2; t1 = time(NULL); t2 = localtime(&t1); t2 -> tm_mday += 40; t2 -> tm_hour += 16; t3 = mktime(t2); printf("40 days and 16 hours from now, it will be a %s ¥n", wday[t2 -> tm_wday]); } /******************* Output should be similar to: *************** 40 days and 16 hours from now, it will be a Sunday */
関連情報