≫ ホーム ≫ C言語ヘッダファイル別一覧 | C言語アルファベット別一覧 ≫ time.h ≫ mktime
tm 構造体を time_t 型に変換します.
#include <time.h>
time_t mktime( struct tm *timeptr );
mktime 関数は引数 timeptr が指す tm 構造体の中の地方時 (local time) を表現している要素別の時刻を,time 関数が返す値と同じ形式の暦時刻 (calendar time) の値に変換します.
変換の際には tm_wday 要素 (日曜日からの日数) と tm_yday要素 (1月1日からの日数) の元の値は無視され自動的に適切な値が格納されます.
mktime 関数を使用して tm 構造体の内容を time 関数が返す値と同じ形式の暦時刻の値に変換するサンプルプログラムを以下に示します.
/* header files */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* functions */
void DisplayTime(struct tm *timeptr);
/* main */
int main(void) {
time_t t;
struct tm t_in, *local;
t_in.tm_year = 100; /* 年 (2000) */
t_in.tm_mon = 12; /* 月 */
t_in.tm_mday = 31; /* 日 */
t_in.tm_hour = 23; /* 時 */
t_in.tm_min = 59; /* 分 */
t_in.tm_sec = 59; /* 秒 */
t_in.tm_wday = 0; /* 曜日 (適当に入力) */
t_in.tm_yday = 0; /* 1月1日からの日数 (適当に入力) */
/* 表示 */
DisplayTime(&t_in);
/* mktime 関数で変換 */
if ( (t = mktime(&t_in) ) == (time_t)(-1) ) {
fprintf(stderr, "error\n");
return EXIT_FAILURE;
}
/* 地方時に変換 */
local = localtime(&t);
/* 表示 */
DisplayTime(local);
return EXIT_SUCCESS;
}
/* tm構造体の中身を表示する */
void DisplayTime(struct tm *timeptr) {
printf("%4d/", timeptr->tm_year);
printf("%2d/", timeptr->tm_mon);
printf("%2d ", timeptr->tm_mday);
printf("%2d:", timeptr->tm_hour);
printf("%2d:", timeptr->tm_min);
printf("%2d", timeptr->tm_sec);
printf(" %2d", timeptr->tm_wday);
printf(" %3d\n", timeptr->tm_yday);
}
サンプルプログラムの実行結果は以下のようになります.
100/12/31 23:59:59 0 0 101/ 0/31 22:59:59 3 30
たくさんあるC言語関連の書籍の中でも特に役に立った本です.よかったら参考にしてみてください.
C言語の実践的参考書.少々値段は張りますが初心者を脱しようとしている人は絶対に読むべきです.
文法だけでなく,コーディングスタイルやデバッグなど文字通り「実践的」なことが書かれているので非常にためになります.
オライリーの本は,読みにくい本が多いのですが本書はとても読みやすくオススメです.
ポインタの解説書としては最高の書籍です.
この1冊でポインタを完全に理解することができます.全くの初学者が読むには敷居が高いですが,入門書を読み終えた後に読むと非常に有益です.