指定の日までの日数(mktime, difftime)
#include <stdio.h> #include <time.h> void print_diff(void) { int target_m = 12; /* 月の指定 */ int target_d = 25; /* 日の指定 */ int target_y; int diff; int oneday = 60 * 60 * 24; /* 1日の秒数 */ time_t timer, mktmr; struct tm *date, target; timer = time(NULL); date = localtime(&timer); target_m--; target_y = date->tm_year; if(date->tm_mon > target_m || (date->tm_mon == target_m && date->tm_mday > target_d)) { target_y++; /* 指定の日を過ぎている場合は来年 */ } target.tm_sec = 0; target.tm_min = 0; target.tm_hour = 0; target.tm_mday = target_d; target.tm_mon = target_m; target.tm_year = target_y; target.tm_isdst = -1; mktmr = mktime(&target); diff = (difftime(mktmr, timer) + oneday - 1) / oneday; /* 指定の日までの秒数÷1日の秒数(切り上げ) */ if(diff == 0) { printf("メリークリスマス!!<br>\n"); } else { printf("クリスマスまであと %d 日です。<br>\n", diff); } } int main(void) { printf("Content-type: text/html\n\n"); printf("<html>\n"); printf("<head>\n"); printf("<title>指定の日までの日数</title>\n"); printf("</head>\n"); printf("<body>\n"); print_diff(); printf("</body>\n"); printf("</html>\n"); return 0; }
〔 実行する 〕