mktime

tm構造体をtime_t型に変換する

【書式】
#include <time.h>
time_t mktime(struct tm *tp);

【説明】
tp が指す構造体の時刻を、time関数が使う時刻と同じ形式の時刻に変換します。
構造体tmのメンバ値が、適正な値ではない場合は、mktime関数内で調節されます。
(ということは、曜日や年内の通し日数だけ空けておいて、この関数で適切な値を求めたりも
出来るわけです。)

【引数】
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、この情報が得られないときに負] */
};

【戻り値】
正常時:変換された時刻 
異常時:(time_t)-1

【使用例】
#include <stdio.h>
#include <time.h>

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

戻る


banner初心者のためのポイント学習C言語」
Copyright(c) 2000-2004 TOMOJI All Rights Reserved