js计算2个日期之间相差天数

思路无非是先获取2个时间点的时间戳,通过时间戳的差值进行时间计算来获取相差的天数,网上几乎都是这样的写法,如下:

var diff = parseInt(Math.abs(date1 - date2) / 1000 / 60 / 60 /24) //把相差的毫秒数转换为天数  

date1和date2分别是2个日期的时间戳,因为加上了绝对值,所以不分先后。

但是parseInt一般都是将字符串转化为Int类型,而Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 /24计算出的结果很明显是浮点类型数据,虽然从实际效果上确实没什么区别,不过我还是偏向于这样写:

Math.floor(Math.abs(k1 - k2) / 1000 / 60 / 60 /24)
两种方法不同,但是结果一样,都是向下去整,但是这样的方法只适合用来获取绝对的时间差,而很多情况下这与我们所期望得到的结果不一致,以我现在做的项目为例:

我现在知道起始时间是2015/5/8 15:31:57,结束时间是2015/5/28 10:34:46,我想知道这2个时间点之间相差多少天,这个时候用上面的方法就不妥了,上面的方法算出来是19,而实际上应该是20,这是一个四舍五入的问题,所有我们应该稍加修改一下方法,使计算出的结果四舍五入成我们想要的整数天数,如下:

Math.floor(Math.abs(k1 - k2) / 1000 / 60 / 60 /24 + 0.5);

这样计算出的结果才是我想要的结果。

至于js转换成时间戳的方法,如果是Date对象,则直接调用getTime()方法就可以获得毫秒时间戳。如果是时间字符串,则用正则表达式匹配将字符串替换成js所识别的标准格式,new一个Date对象即可。


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值