C言語 標準関数 | 応用 | サンプル

標準関数
構文
応用

管理人

プライバシーポリシー


書式

#include <time.h>

time_t mktime( struct tm *timep );

■戻り値:
成功時は1970/1/1 00:00:00 から構造体timepに設定した任意の日時までの経過秒数を返す。
異常時は-1を返す。
timepには、値を補完した構造体が設定される。
time_t型はlong型と同じである。

関連関数
説明

任意の日時情報(年月日時分秒)を構造体timepの該当メンバに設定し、グリニッチ標準時(GMT)で1970/1/1 00:00:00からの経過秒数を返した上で、更にtimepの経過日数と週を補完する。

仮に関数実行前に構造体timepの経過日数メンバと週メンバに適切な値が設定されていても、それを無視した上で、設定した日時情報を元に再設定される。

異常時は-1を返す。

サンプル

#include <stdlib.h>
#include <time.h>

/* time.h内での定義 */
struct tm {
  int tm_sec;/* 秒[0-61]閏秒考慮 */
  int tm_min;/* 分[0-59] */
  int tm_hour;/* 時[0-23] */
  int tm_mday;/* 日[1-31] */
  int tm_mon;/* 月[0-11] */
  int tm_year;/* 年[1900年から起算] */
  int tm_wday;/* 曜日[0-6] 0:日曜日 */
  int tm_yday;/* 年内の経過日数[0-365] */
  int tm_isdst;/* 日本では0 */
};

main() {

  struct tm strtim;
  time_t ret;

  /* 2002/02/03_11:22:33 を設定 */
  memset(( void * )&strtim , '\0' , sizeof( strtim ));
  strtim.tm_year = 102; /* 年[1900年から起算] */
  strtim.tm_mon = 1; /* 月[0-11] */
  strtim.tm_mday = 3; /* 日[1-31] */
  strtim.tm_hour = 11 ;/* 時[0-23] */
  strtim.tm_min = 22 ;/* 分[0-59] */
  strtim.tm_sec = 33; /* 秒[0-61]閏秒考慮 */

  /* 日付補完 */
  ret = mktime( &strtim );
  if( ret == -1 ) {
    printf( "mktimeでエラー発生\n" );
    return -1;
  }

  /* 経過秒を確認 */
  printf( "ret=%d\n" , ret );

  /* 構造体を確認 */
  printf( "tm_sec=%d\n" , strtim.tm_sec );
  printf( "tm_min=%d\n" , strtim.tm_min );
  printf( "tm_hour=%d\n" , strtim.tm_hour );
  printf( "tm_mday=%d\n" , strtim.tm_mday );
  printf( "tm_mon=%d\n" , strtim.tm_mon );
  printf( "tm_year=%d\n" , strtim.tm_year );
  printf( "tm_wday=%d\n" , strtim.tm_wday );
  printf( "tm_yday=%d\n" , strtim.tm_yday );
  printf( "tm_isdst=%d\n" , strtim.tm_isdst );

  /* 日付を文字で確認 */
  /* ctimeが返す文字列の末尾は\n付き */
  printf( "\n%s" , ctime( &ret ));

  return 0;
}

実行結果

ret=1012702953
tm_sec=33
tm_min=22
tm_hour=11
tm_mday=3
tm_mon=1
tm_year=102
tm_wday=0
tm_yday=33
tm_isdst=0

Sun Feb  3 11:22:33 2002


Copyright © 2008-2015 http://hitorilife.com All Rights Reserved.