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=1611191381
atime=1611191381
tm_sec=41
tm_min=9
tm_hour=10
tm_mday=21
tm_mon=0
tm_year=121
tm_wday=4
tm_yday=20
tm_isdst=0
chrtime=Thu Jan 21 10:09:41 2021