引き続き・・・悩んでおります(^^;
”あと何日”というものを作ろうとRTCで時刻を管理し
300日など日数から引き算していくのは理解できるのですが
現在から設定した特定の日時までのカウントダウン値を求める場合は
うるう年のときは○○で、2月4月6月9月11月が30日と計算させる方法以外に
ライブラリーや関数などはあるものなのでしょうか?
何かいい方法がありましたらお教えください。
宜しくお願いします。
OKA さんが書きました:現在から設定した特定の日時までのカウントダウン値を求める場合は
うるう年のときは○○で、2月4月6月9月11月が30日と計算させる方法以外に
ライブラリーや関数などはあるものなのでしょうか?
int y = yyyy - 1900, m = mm;
if (m < 3) {
m = 12 + mm;
y = y - 1;
}
int x = m - 4;
int days = 365 * y + y / 4 + ((x >= 0) ? 30 * (x + 1) + 3 * x / 5 + 1 : 0) + dd - 1;
#define min(x, y) ((x) < (y) ? (x) : (y))
int y1 = days / 1461;
int y2 = min(days % 1461 / 365, 3);
int d1 = days - 1461 * y1 - 365 * y2;
int d2 = d1 % 153;
int m1 = d1 / 153;
int m2 = 5 * d2 / 153;
int dd = d2 - (153 * m2 + 2) / 5 + 1;
int mm = 5 * m1 + m2 + 3;
int yyyy = 1900 + 4 * y1 + y2;
if (mm > 12) {
yyyy += 1;
mm -= 12;
}
#define min(x, y) ((x) < (y) ? (x) : (y))
int y1 = days / 1461;
int y2 = min(days % 1461 / 365, 3);
int d1 = days - 1461 * y1 - 365 * y2;
int d2 = d1 % 153;
int m1 = d1 / 153;
int m2 = (5 * d2 + 2) / 153;
int dd = d2 - (153 * m2 + 2) / 5 + 1;
int mm = 5 * m1 + m2 + 3;
int yyyy = 1900 + 4 * y1 + y2;
if (mm > 12) {
yyyy += 1;
mm -= 12;
}