-

计算两个日期中间的天数

问题

你需要找出两个日期间隔了几年,几个月,几天,几个小时,几分钟,几秒。

解决方案

利用JavaScript的日期计算函数getTime()。它提供了从1970年1月1日开始经过了多少毫秒。

DAY = 1000 * 60 * 60  * 24

d1 = new Date('02/01/2011')
d2 = new Date('02/06/2011')

days_passed = Math.round((d2.getTime() - d1.getTime()) / DAY)

讨论

使用毫秒,使计算时间跨度更容易,以避免日期的溢出错误。所以我们首先计算一天有多少毫秒。然后,给出了2个不同的日期,只须知道在2个日期之间的毫秒数,然后除以一天的毫秒数,这将得到2个不同的日期之间的天数。

如果你想计算出2个日期对象的小时数,你可以用毫秒的时间间隔除以一个小时有多少毫秒来得到。同样的可以得到几分钟和几秒。

HOUR = 1000 * 60 * 60

d1 = new Date('02/01/2011 02:20')
d2 = new Date('02/06/2011 05:20')

hour_passed = Math.round((d2.getTime() - d1.getTime()) / HOUR)