new Date 計算出當前日期後n天的日期 以及 根據兩個日期,計算出一共經歷了幾天 (包含了在ie和火狐中的相容)
阿新 • • 發佈:2019-01-23
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, 所以再來一次
這樣就完成了!!