🔧 時間 ・ time.h ・ C89
mktime の使い方time_t mktime(struct tm *tm);
struct tm(年月日時分秒に分解されたローカル時刻)をtime_t型のカレンダー時刻へ変換する。範囲外の値(例:13月)は自動的に繰り上げ正規化されるという特徴がある。 ローカルタイムゾーンを前提とした変換のため、UTCで扱いたい場合は別途タイムゾーンの補正が必要。
#include <time.h>
#include <stdio.h>
int main(void) {
struct tm t = {0};
t.tm_year = 126;
t.tm_mon = 6;
t.tm_mday = 29;
time_t tt = mktime(&t);
printf("%ld\n", (long)tt);
return 0;
}
⚠️ tm_yearは1900年からのオフセット、tm_monは0始まり(0=1月)であり、そのまま西暦や月番号を代入すると値がずれる典型的なミスがある。
アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ
mktime と一緒に使う関数もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。