時間を扱う関数
mktime
ヘッダ #include "time.h"
形 式 time_t mktime(struct tm *timeptr);
機 能 mktime関数は、timeptrで指される構造体中の現地時刻を表現している要素別の時刻を、time関数が返す値と同じ表現形式をもった暦時刻値に変換する。構造体のtm_wdayおよびtm_yday要素の元の値は無視し、その他の要素の元の値は、struct tmの解説で示した値の範囲内でなくても構わない。正常に動作が完了した場合、構造体のtm_wdayおよびtm_yday要素の値を適切に設定し、他の要素は指定された暦時刻を表すように設定するが、それらの値は強制的にstruct tmの解説で示した範囲に設定する。ここで、tm_mdayの最終値はtm_monおよびtm_yearが決まるまで設定しない。
返却値 mktime関数は、指定された暦時刻を型time_tの値に表現形式を変換して返す。暦時刻が表現できない場合、関数は値(time_t)-1を返す。
【引数】
struct tm *tp : tm構造体へのポインタ
構造体 tm はtime.h の中で宣言され、以下の情報を含みます
struct tm {
int tm_sec; /* 秒 [0-61] 最大2秒までのうるう秒を考慮 */
int tm_min; /* 分 [0-59] */
int tm_hour; /* 時 [0-23] */
int tm_mday; /* 日 [1-31] */
int tm_mon; /* 月 [0-11] 0から始まることに注意 */
int tm_year; /* 年 [1900からの経過年数] */
int tm_wday; /* 曜日 [0:日 1:月 ... 6:土] */
int tm_yday; /* 年内の通し日数 [0-365] 0から始まることに注意*/
int tm_isdst; /* 夏時間フラグ [夏時間を採用しているときに正、採用していないときに 0、この情報が得られないときに負] */
};
【使用例】
#include
#include
int main(void)
{
time_t timer;
struct tm t;
struct tm *t_st;
t.tm_year = 101; /* 2001年 */
t.tm_mon = 4; /* 5月 */
t.tm_mday = 20; /* 20日 */
t.tm_wday = 0; /* 日曜日 */
t.tm_hour = 14; /* 14時 */
t.tm_min = 20; /* 20分 */
t.tm_sec = 0; /* 00秒 */
t.tm_isdst= -1; /* 夏時間無効 */
/* 構造体を時刻に変換 */
timer = mktime(&t);
printf("時刻 : %ld\n",timer);
/* 再変換して確認 */
t_st = localtime(&timer);
printf("年 : %d\n",t_st->tm_year+1900);
printf("月 : %d\n",t_st->tm_mon+1);
printf("日 : %d\n",t_st->tm_mday);
printf("曜日: %d\n",t_st->tm_wday);
printf("時 : %d\n",t_st->tm_hour);
printf("分 : %d\n",t_st->tm_min);
printf("秒 : %d\n",t_st->tm_sec);
return 0;
}
【実行結果例】
時刻 : 990368400
年 : 2001
月 : 5
日 : 20
曜日: 0
時 : 14
分 : 20
秒 : 0
[Quote]:http://www.bohyoh.com/CandCPP/C/Library/mktime.htmlhttp://www.bohyoh.com/CandCPP/C/Library/mktime.html