對於一日期計算出一相對應的一整數N,再計算出兩整數相差即為相差天數。
方法如下:
N=1461 * f(年) ÷ 4 + 153 * g(月) ÷ 5 +日
其中:
f(年) = 年 - 1 如果月<=2
=年 其他情況
g(月) =月+13 如果月<=2
=月+1 其他情況
(對於1900/3/1以後上式都成立)
ex : 2004/2/1~2005/9/20
∵N1=1461 * 2003 ÷ 4 +153 * 15 ÷ 5 + 1
=731595 + 459 + 1
=732055
N2=1461 * 2005 ÷ 4 +153 * 10 ÷ 5 +20
= 732326 + 306 +20
=732652
∴ N2 - N1 = 597 = 相差天數
C++ 判斷式 if (month<=2){
month+=13;
year-=1;}
else{
month+=1;
}
用Execl測試過結果相同,但超過2100年後就開始有誤差了。
沒有留言:
張貼留言