- 41 名前:名無しさん@お腹いっぱい。 [2001/01/13(土) 01:54]
- >>39
日付関係の便利なライブラリがある言語を使えばいいと思う (RubyとかJavaとか)が、即席でCでジェネレータを書いてみた。 ただし仕様は限りなく手抜き。 日付フォーマット変えたいときはPRINTFMTをstrftime(3)で 指定可能な適当なものに変更してくれ。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define PRINTFMT "%Y%m%d" int gendate(const char *from, const char *to) { const char *fmt = "%d%c%d%c%d"; int i, y, m, d; char junk[2]; struct tm local; time_t secs[2]; char buff[24]; const char *p; memset(&local, 0, sizeof(local)); for (i = 0; i < 2; ++i) { p = i ? to : from; if (sscanf(p, fmt, &y, &junk[0], &m, &junk[1], &d) != 5) { fprintf(stderr, "Invalid date format: %s\n", p); return 2; } local.tm_year = y - 1900; /* XXX */ local.tm_mon = m - 1; local.tm_mday = d; secs[i] = mktime(&local); if (secs[i] == -1) { fprintf(stderr, "Can't handle date: %s\n", p); return 2; } } while (difftime(secs[0], secs[1]) <= 0) { strftime(buff, sizeof buff, PRINTFMT, localtime(&secs[0])); puts(buff); secs[0] += 60 * 60 * 24; } return 0; } int main(int argc, char **argv) { if (argc < 3) { fprintf(stderr, "usage: %s from to\n", argv[0]); return 1; } return gendate(argv[1], argv[2]); }
|

|