new Date 计算出当前日期后n天的日期 以及 根据两个日期,计算出一共经历了几天 (包含了在ie和火狐中的兼容)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhai_15733218875/article/details/81480436

1、计算出当前日期后n天的日期

getAfterFormatDate (days) { // 如果需要计算当前的日期 传 0 即可 (此例是考虑时分秒的情况)
      let dd = new Date()
      dd.setDate(dd.getDate() + days) // 获取days天后的日期
      let y = dd.getFullYear()
      let m = (dd.getMonth() + 1) < 10 ? ('0' + (dd.getMonth() + 1)) : (dd.getMonth() + 1)
      let d = dd.getDate() < 10 ? ('0' + dd.getDate()) : dd.getDate()
      let hour = dd.getHours() < 10 ? ('0' + dd.getHours()) : dd.getHours()
      let min = dd.getMinutes() < 10 ? ('0' + dd.getMinutes()) : dd.getMinutes()
      let second = dd.getSeconds() < 10 ? ('0' + dd.getSeconds()) : dd.getSeconds()
      return y + '-' + m + '-' + d + ' ' + hour + ':' + min + ':' + second
    }

2、根据两个日期,计算出一共经历了几天

// 此例是考虑时分秒的情况,进行上取整 比如 5.1 则 为 6
datedifference (sDate1, sDate2) { // sDate1和sDate2是2006-12-18格式
      let dateSpan,
        iDays
      sDate1 = Date.parse(sDate1.replace('-', '/'))
      sDate2 = Date.parse(sDate2.replace('-', '/'))
      dateSpan = sDate2 - sDate1
      dateSpan = Math.abs(dateSpan)
      iDays = Math.ceil(dateSpan / (24 * 3600 * 1000))
      return iDays
    }

记录一下兼容问题
1、new Date() // 无参数时 所有浏览器兼容
2、let data = ‘2017-05-05’
new Date (data)
Date.parse(data)
// 像这种带参数的解决方法如下(ie和火狐中的兼容解决办法):
new Date (data.replace(‘-‘, ‘/’).replace(‘-‘, ‘/’))
Date.parse(data.replace(‘-‘, ‘/’).replace(‘-‘, ‘/’))

由于 只有在chrome中newDate() 可以接受 2018-08-08这种参数,但是在ie和火狐里面是不支持的(反而支持 2018/08/08 这种格式,所以我们需要用到replace进行替换)
实践发现 在ie中 只需要 data.replace(‘-‘, ‘/’),就可以了
但是在火狐中仍是NaN 打印得知,在火狐中使用data.replace(‘-‘, ‘/’), 这个data会替换成 2018/08-08, 所以再来一次

这样就完成了!!

猜你喜欢

转载自blog.csdn.net/zhai_15733218875/article/details/81480436