当前时间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
      }

 

  可能总结得不好,不过我就是给自己做个笔记,下次遇到直接拿过来就用了,大概就这样吧

posted @ 2020-04-01 11:34  secretAngel  阅读(8031)  评论(0编辑  收藏  举报