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

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

getAfterFormatDate (date = '',days) { // 如果需要计算当前的日期 传 0 即可 (此例是考虑时分秒的情况)
      let dd = date ? new Date(date) : 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('-', '/').replace("-","/"))
      sDate2 = Date.parse(sDate2.replace('-', '/').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, 所以再来一次

这样就完成了!!



const formatTime = date => {
    const year = date.getFullYear()
    const month = date.getMonth() + 1
    const day = date.getDate()
    const hour = date.getHours()
    const minute = date.getMinutes()
    const second = date.getSeconds()
   
    return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
  }
   
  const formatNumber = n => {
    n = n.toString()
    return n[1] ? n : '0' + n
  }
   
  module.exports = {
    formatTime: formatTime
  }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值