|
#include <stdio.h>
#include <time.h>
int calc_date(int *y, int *m, int *d, int n)
{
struct tm t = { 0 };
t.tm_year = *y - 1900;
t.tm_mon = *m - 1;
t.tm_mday = *d + n;
if (mktime(&t) == -1) return 0;
*y = t.tm_year + 1900;
*m = t.tm_mon + 1;
*d = t.tm_mday;
return 1;
}
int main()
{
int y = 2002, m = 8, d = 8;
if (calc_date(&y, &m, &d, -3))
printf("%4d/%02d/%02d\n", y, m, d);
return 0;
}
mktime を使うのなら、秒の計算も localtime も不要です。
ただ、2038年問題が気になります。
|