Simple Sand Samples |
C言語 > 基準日からの連続した日付を得る
dateseq.c
#include <stdio.h> #include <stdlib.h> #include <time.h> void date(char *buf, char *base, int n) { int y, m, d; struct tm t; time_t time; struct tm *new; sscanf(base, "%d-%d-%d", &y, &m, &d); t.tm_year = y - 1900; t.tm_mon = m - 1; t.tm_mday = d; t.tm_hour = 0; t.tm_min = 0; t.tm_sec = 0; time = mktime(&t) + (60*60*24) * n; new = localtime(&time); strftime(buf, 255, "%F %A", new); } int main() { char buf[30]; int i; for(i=0;i<10;i++){ date(buf, "2013-01-30", i); printf("%s\n",buf); } return 0; }
$ gcc dateseq.c
$ ./a.out
2013-01-30 Wednesday
2013-01-31 Thursday
2013-02-01 Friday
2013-02-02 Saturday
2013-02-03 Sunday
2013-02-04 Monday
2013-02-05 Tuesday
2013-02-06 Wednesday
2013-02-07 Thursday
2013-02-08 Friday
$
$ ./a.out
2013-01-30 Wednesday
2013-01-31 Thursday
2013-02-01 Friday
2013-02-02 Saturday
2013-02-03 Sunday
2013-02-04 Monday
2013-02-05 Tuesday
2013-02-06 Wednesday
2013-02-07 Thursday
2013-02-08 Friday
$
* 確認環境 Debian Linux(Wheezy)