C言語 標準関数 | 応用 | サンプル
#include <time.h>
char * ctime( const time_t *timr );
■戻り値:
「曜日 月 日 時:分:秒 年」の固定形式に変換された文字列へのポインタを返す。
timeで取得したtimr(グリニッチ標準時(GMT)で1970/1/1 00:00:00 から現在までの経過秒数)を引数に、「曜日 月 日 時:分:秒 年」の固定形式に変換された文字列へのポインタを返す。
time_t型はlong型と同じである。同様な関数としてlocaltimeがある。
また、timrから86400(3600*24)を減じた値を引数として指定することで、前日同時刻の日付形式を求めることもできる。
#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" );
return -1;
}
/* 経過秒を確認 */
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 );
printf( "chrtime=%s" , chrtime );/* chrtimeの末尾は\n\0 */
return 0;
}
rtime=1611190223
atime=1611190223
tm_sec=23
tm_min=50
tm_hour=9
tm_mday=21
tm_mon=0
tm_year=121
tm_wday=4
tm_yday=20
tm_isdst=0
chrtime=Thu Jan 21 09:50:23 2021