当前时间new Date()转换成时间戳毫秒数
需求:列表页有开始日期、结束日期两个选项,且两者之间不能超过30天、开始日期不能晚于结束日期、结束日期不能早于开始日期的验证
在网上查了些资料,也把想要的效果实现了,记录一下等下次再遇到直接看笔记了
参考文章:https://www.cnblogs.com/qing619/p/9283618.html
1、HTML代码部分
<el-form-item label="开始日期" prop="dtBegin"> <el-date-picker v-model="qryParams.dtBegin" align="right" type="date" placeholder="" format="yyyy-MM-dd" value-format="yyyyMMdd" @change="DateChange('dtBegin')" /> </el-form-item> <el-form-item label="结束日期" prop="dtEnd"> <el-date-picker v-model="qryParams.dtEnd" align="right" type="date" placeholder="" format="yyyy-MM-dd" value-format="yyyyMMdd" @change="DateChange('dtEnd')" /> </el-form-item>
因为后台需要传递的日期参数格式为yyyyMMdd,所以对组件设置value-format=“yyyyMMdd”属性
2、获取当前日期
// 显示当前日期的明天日期值(yyyy-MM-dd格式) getNowDate() { const _date = new Date().getTime() + 24 * 60 * 60 * 1000 const d1 = new Date(_date) // console.log(d1, '当前日期') const year = d1.getFullYear() let month = d1.getMonth() + 1 let date = d1.getDate() if (month < 10) { month = '0' + month } if (date < 10) { date = '0' + date } return year + month + date // return d1 },
这里 const _date = new Date().getTime() + 24 * 60 * 60 * 1000 是因为我需要获取明天的日期,获取哪天的根据需要加减即可:+ n * 24 * 60 * 60 * 1000或 - n * 24 * 60 * 60 * 1000(n代表往前或往后的天数),比如我想要当前日期后天的时间戳毫秒数,
const _date = new Date().getTime() + 2 * 24 * 60 * 60 * 1000,
2、给日期组件绑定change事件及验证
// 开始、截止日期change事件 DateChange(type) { const days = this.dateDiff(this.qryParams.dtBegin, this.qryParams.dtEnd, type) if (days > 30) { this.$alert('查询日期不能超过30天', '提示', { confirmButtonText: '确定', confirmButtonClass: 'ticket-comfirm-btn', callback: () => {} }) if (type === 'dtBegin') { this.qryParams.dtBegin = '' } else { this.qryParams.dtEnd = '' } } }, // 开始/结束日期间隔不超过30天、开始日期晚于结束日期、结束日期早于开始日期验证 dateDiff(startDt, endDt, type) { // 20200303转成2020-03-03格式 const startDate = stringConcat(startDt) const endDate = stringConcat(endDt) // 2020-03-03转new Data()对象 const startTimes = new Date(startDate) const endTimes = new Date(endDate) // 获取开始、截止时间的毫秒数 const startTimesNum = startTimes.getTime(startTimes) const endTimesNum = endTimes.getTime(endTimes) if (endTimesNum - startTimesNum < 0 && type === 'dtBegin') { this.$alert('开始日期不能晚于结束日期', '提示', { confirmButtonText: '确定', confirmButtonClass: 'ticket-comfirm-btn', callback: () => {} }) this.qryParams.dtBegin = '' return } else if (endTimesNum - startTimesNum < 0 && type === 'dtEnd') { this.$alert('结束日期不能早于开始日期', '提示', { confirmButtonText: '确定', confirmButtonClass: 'ticket-comfirm-btn', callback: () => {} }) this.qryParams.dtEnd = '' return } const days = parseInt((endTimesNum - startTimesNum) / 24 / 60 / 60 / 1000) return days }
可能总结得不好,不过我就是给自己做个笔记,下次遇到直接拿过来就用了,大概就这样吧