1. 程式人生 > >new Date 計算出當前日期後n天的日期 以及 根據兩個日期,計算出一共經歷了幾天 (包含了在ie和火狐中的相容)

new Date 計算出當前日期後n天的日期 以及 根據兩個日期,計算出一共經歷了幾天 (包含了在ie和火狐中的相容)

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, 所以再來一次

這樣就完成了!!