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

標準関数
構文
応用

管理人

プライバシーポリシー


書式

#include <time.h>

struct tm * localtime( time_t *timr );

■戻り値:tm構造体へのポインタを返す。

関連関数
説明

timeで取得したtimr(グリニッチ標準時(GMT)で1970/1/1 00:00:00 から現在までの経過秒数)を引数に、年月日時分秒の形式に変換されたtm構造体へのポインタを返す。

time_t型はlong型と同じである。同様な関数としてctimeがある。

また、timrから86400(3600*24)を減じた値を引数として指定することで、前日同時刻の日付に対するtm構造体へのポインタを求めることもできる。

サンプル

#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() {

  time_t rtime;
  time_t atime;

  /* 経過秒を取得 */
  rtime = time( &atime );
  if( rtime == -1 ) {
    printf( "時間取得でエラーが発生しました。\n" );
  }

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

  /* 構造体形式のローカル(日本)時間に変換 */
  struct tm * strtim;
  strtim = localtime( &rtime );
  /* 内容を確認 */
  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\n" , strtim->tm_isdst );

  /* 文字列形式のローカル(日本)時間に変換 */
  char * chrtime;
  chrtime = ctime( &rtime );
  /* chrtimeの末尾は\n\0 */
  printf( "chrtime=%s" , chrtime );
}

実行結果

rtime=1511079348
atime=1511079348

tm_sec=48
tm_min=15
tm_hour=17
tm_mday=19
tm_mon=10
tm_year=117
tm_wday=0
tm_yday=322
tm_isdst=0

chrtime=Sun Nov 19 17:15:48 2017


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