1. 程式人生 > >兩個日期之間閏年數計算方法探索

兩個日期之間閏年數計算方法探索

由於一個專案的需要,需要計算兩個日期之間的天數,計算天數就涉及到閏年的問題,如何計算兩個日期之間的閏年數成為了問題的關鍵。

雖然使用迴圈可以很容易的計算出來,如下:

這個演算法的時間複雜度是(nYearE-nYearS

),顯然不適宜年份相差很大的計算。

在網上找了好久,也看到一些演算法,但是不能夠對應所有的情況,有些演算法在年份比較大時,差值就不對了。

今天偶然發現了一個規律,如下:一般情況下,兩個日期之間的差值除以4取整,減去重疊的部分,就是它們之間的閏年數,但是,當結束日期的餘數減去開始日期的餘數需要借位時,閏年數需要加1,開始日期的餘數為0的情況,當做4來看

經過測試,該演算法基本正確,演算法如下:

完整的演算法和測試用例如下: