mktime() — ローカル時刻の変換
形式
#include <time.h>
time_t mktime(struct tm *time);言語レベル
ANSI
スレッド・セーフ
はい
ロケール依存
この関数の振る舞いは、現行ロケールの LC_TOD カテゴリーの影響を受ける可能性があります。
説明
mktime() 関数は、 timeが指す保管 tm 構造体 (ジョブの現地時間であると想定) を、他の時間関数での使用に適した time_t 構造体に変換します。 変換後は、time_t 構造体は協定世界時 (UTC) であるとみなされます。 この変換の場合、 mktime() はローカル・タイム・ゾーンおよび夏時間調整 (DST) の現行ロケール設定を検査します。 これらの値が現行ロケールで設定されていない場合、 mktime() は現行ジョブからローカル時間帯および夏時間調整の設定を取得します。 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) は、協定世界時を表すことができない場合に戻されます。
例
この例では、現在日付から 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
*/
関連情報
- asctime() - 時刻を文字列に変換する
- asctime_r() - 時刻を文字列に変換する ( 再始動可能 )
- ctime() — 時刻をキャラクター文字列に変換する
- ctime64() — 時刻をキャラクター文字列に変換する
- ctime64_r() — 時刻をキャラクター文字列 (再始動可能) に変換する
- ctime_r() — 時刻からキャラクター文字列 (再始動可能) に変換する
- gmtime() — 変換時間
- gmtime64() — 時間を変換する
- gmtime64_r() — 時間を変換する (再始動可能)
- gmtime_r() — 時間の変換 (再始動可能)
- localtime() — 時刻を変換する
- localtime64() — 時間を変換する
- localtime64_r() — 時間を変換する (再始動可能)
- localtime_r() — 時刻を変換する (再始動可能)
- mktime64() — ローカル時刻を変換する
- time() — 現在時刻を判別する
- time64() — 現在時刻を確認する
- <time.h>