読者です 読者をやめる 読者になる 読者になる

mktime

UNIXシステムコール Sample C言語

mktimeは、ローカル時刻が格納されているtm構造体の時刻情報をUNIX時間へ変換し、time_t型変数として返すC標準ライブラリ関数・・・。

Man page of CTIME

ここまでで、

time: time_tを取得
localtime: time_t -> tm構造体
asctime: tm構造体 -> 時刻文字列
strptime: 時刻文字列 -> tm構造体
mktime: tm構造体 -> time_t

このような変換ができることがわかる・・・。

そこで、これらの関数を使って、現在のUNIX時間t1を一旦時刻文字列に変換した後、
その文字列から元のUNIX時間t2に戻す処理をやってみる・・・。

このように必要な変数や構造体を用意し、

まずは、timeでUNIX時間t1を取得して、printfで出力・・・。

localtimeでローカル時刻に変換、返ってくるtm_ptrの内容を見る・・・。

asctimeで時刻文字列strが返るので、これを出力・・・。

strptimeでstrをパースし、渡したstmに時刻情報が入るのでこれを見る・・・。

mktimeでローカル時刻のstmからUNIX時間のt2が求められる・・・。

$ ./mktime
[UNIXTime]: 1435890577
[JST]: 2015/7/3 11:29:37
[TimeString]: Fri Jul  3 11:29:37 2015
[TimeString To JST]: 2015/07/03 11:29:37
[JST To UNIXTime]: 1435890577
$

最初のt1([UNIXTime]: 1435890577)と、最後のt2([JST To UNIXTime]: 1435890577)が同じ値・・・。

Sample/mktime.c at master · bg1bgst333/Sample · GitHub