两个日期之间闰年数计算方法探索

来源:互联网 发布:php debug 编辑:程序博客网 时间:2024/04/27 15:30

由于一个项目的需要,需要计算两个日期之间的天数,计算天数就涉及到闰年的问题,如何计算两个日期之间的闰年数成为了问题的关键。

虽然使用循环可以很容易的计算出来,如下:

这个算法的时间复杂度是(nYearE-nYearS),显然不适宜年份相差很大的计算。

在网上找了好久,也看到一些算法,但是不能够对应所有的情况,有些算法在年份比较大时,差值就不对了。

今天偶然发现了一个规律,如下:一般情况下,两个日期之间的差值除以4取整,减去重叠的部分,就是它们之间的闰年数,但是,当结束日期的余数减去开始日期的余数需要借位时,闰年数需要加1,开始日期的余数为0的情况,当做4来看

经过测试,该算法基本正确,算法如下:

完整的算法和测试用例如下: