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
}