首页 > 代码库 > 有了这个公式,妈妈再也不用担心我计算日期差了

有了这个公式,妈妈再也不用担心我计算日期差了

  一直以来计算两个日期的间隔天数很让我们头大,比如计算2014/3/231993/3/4之间距离多少天,传统的想法是先判断年份是不是闰年,然后计算差了多少年,再算差了几个月,几天等等。这种方法虽然可以帮助我们理清其中的逻辑,但是写这样一段程序很容易出错,而且效率也不是很高。那么有没有好一点的办法呢?当然有!

  UnixLinux系统中都是从197011号开始计算时间的,以秒为单位。虽然用秒作单位有点冗余,但是数学上却很简单。将日期转化为从基准日期之后过了多少秒,然后再执行操作,这样就消除了随着日历的缩减(比如日期和月份的缩减)带来的诸多问题。

  以基准时间为准将日期转化为自基准时间以来经过的秒数然后再计算就可以很方便的计算两个日期之间的间隔秒数甚至间隔天数。下面这个公式就可以方便的计算一个日期与基准时间之间的间隔秒数:


(Year* 365) + (Year / 4) -(Year/100)+(Year/400)+(Month*306001/10000)+(Day)

 使用这个公式可是要注意一下几点,执行计算的时候可能要改变月份和年份的值:

 1.对于一月和二月,必须给月份Month上加13,给年份减去1

  2.对于其他月份,仅给月份Month1.



例如计算1970/1/1的算式如下:

 (1969*365)+(1969/4)-(1969/100)+(1969/400)+(14*306001/10000)+1.


有了这个公式,妈妈再也不用担心我计算日期差了