time()の値から現在の日付を計算

ライブラリ関数のgmtime()を用いれば、timeの結果から現在の日付を算出することが可能です。


$ man gmtime

#include<time.h>

struct tm *gmtime(const time_t *timep);


           struct tm {
               int tm_sec;         /* seconds */
               int tm_min;         /* minutes */
               int tm_hour;        /* hours */
               int tm_mday;        /* day of the month */
               int tm_mon;         /* month */
               int tm_year;        /* year */
               int tm_wday;        /* day of the week */
               int tm_yday;        /* day in the year */
               int tm_isdst;       /* daylight saving time */
           };



上に示すtm型の構造体を返却してくるようである。


/* mytime.c */
//低水準の時刻から現在の時刻を計算し、表示させるプログラム
#include<stdio.h> //printf
#include<time.h> //time, gmtime
int main(void)
{
//UNIXエポック(1970.01.01.AP00:00)を起点とした時間(second)を表示
time_t mytime;
struct tm *time_ptr;

time(&mytime);

//gmtimeより現在の日付を算出
time_ptr = gmtime(&mytime);

printf("Raw time is %ld\n", mytime);
printf("date : %02d/%02d/%02d\n", time_ptr->tm_year, time_ptr->tm_mon+1, time_ptr->tm_mday);


return 0;
}



$ ./mytime2
Raw time is 1342782353
date : 112/07/20

112年って。。。。2000年問題が起こっています笑