mktime64() — 地方時の変換
フォーマット
#include <time.h>
time64_t mktime64(struct tm *time);
言語レベル
ILE C Extension
スレッド・セーフ
はい
ロケール依存
この関数の振る舞いは、現行ロケールの LC_TOD カテゴリーの影響を受ける可能性があります。
説明
mktime64() 関数は、time が指す保管済みの tm 構造体 (ジョブ地方時として想定) を、別の time 関数の使用に適した time64_t 値に変換します。 変換後は、time64_t 値は協定世界時 (UTC) であるとみなされます。この変換を行うため、mktime64() はローカル時間帯および夏時間 (DST) の現行ロケール設定をチェックします。 これらの値が現行ロケールで未設定の場合、mktime64() はローカル時間帯および夏時間 (DST) の設定を現行ジョブから取得します。 DST がロケールで設定済みでも、時間帯情報が未設定の場合は、ロケール内の DST 情報は無視されます。 mktime64() 関数は次に、現行ジョブの時間帯情報を使用して UTC を判別します。
構造体のエレメントによっては、time が指す値が gmtime64() 用に表示される範囲に制限されないものもあります。
mktime64() に渡される tm_wday と tm_yday の値は無視され、戻りでこれらの正しい値が割り当てられます。
tm_isdst の値が正であるか 0 であるかにより、mktime() は、指定した時間で DST が有効になっているかいないかを最初に推定します。 tm_isdst が負の値の場合、 mktime() は、指定された時間で DST が有効になっているかどうかについて、判別を試みます。
戻り値
mktime64() 関数は、型 time64_t を持つ協定世界時 (UTC) を戻します。協定世界時を表示できない場合、または、指定された time が範囲外の場合、値 (time_t)(-1) は戻ります。 指定された time が範囲外の場合、errno は EOVERFLOW に設定されます。
例
#include <stdio.h>
#include <time.h>
char *wday[] = { "Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday" };
int main(void)
{
time64_t t1, t3;
struct tm *t2;
t1 = time64(NULL);
t2 = localtime64(&t1);
t2 -> tm_mday += 40;
t2 -> tm_hour += 16;
t3 = mktime64(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() — 時間の変換 (再始動可能)
- mktime() — 地方時の変換
- time() — 現在時刻の判別
- time64() — 現在時刻の判別
- <time.h>