elementui实现周选择器,显示为yyyy-dd-mm - yyyy-dd-mm

  • element的日期选择器支持按周进行选择,但是选中后显示的是xxxx年第x周,不符合需求,并且打印出来是中国标准时间 Mon May 04 2020 00:00:00 GMT+0800 (中国标准时间)
  • 实现效果
    在这里插入图片描述

html部分:

<template>
  <el-date-picker
     v-model="seletWeekValue"
     :editable="false"
     style=" opacity: 0;position: absolute;z-index: 100;"
     size="small"
     :picker-options="{ 'firstDayOfWeek': 1 }"
     type="week"
     format="yyyy年第WW周"
     :clearable="false"
     :default-time="['00:00:00', '23:59:59']"
     placeholder="选择查询时间"
     @change="changeweek"
   >
   </el-date-picker>
   <div>
     <el-input v-model="weekTime" :clearable="true" placeholder="请选择日期">
     </el-input>
   </div>
</template>

js部分:

<script>
export default {
  data() {
    return {
      seletWeekValue: '',
      weekTime: '',
      startTimeNum: '',
      endTimeNum: ''
    }
  },
  methods:{
    timestampToTime(timestamp) {
      var date = new Date(timestamp) // 时间戳为10位需*1000,时间戳为13位的话不需乘1000
      let Y = date.getFullYear() + '-'
      let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
      let D = date.getDate() + ' '
      return Y + M + D
    },
    // 周选择器开始时间和结束时间
    changeweek(val) {
      // val===> Mon Nov 09 2020 00:00:00 GMT+0800 (中国标准时间)
      let todayDay = val ? new Date(val) : new Date()
      let todayOfWeek = todayDay.getDay()
      // let todayOfmonth = todayDay.getMonth()
      // let todayOfDate = todayDay.getDate()
      let spendDay = 1
      if (todayOfWeek !== 0) {
        spendDay = 7 - todayOfWeek // 开始时间到结束时间还有几天
      }
      //  86400000为一天的毫秒数
      this.startTimeNum = todayDay.valueOf() - (6 - spendDay) * 86400000 // 开始时间时间戳
      this.endTimeNum = todayDay.valueOf() + spendDay * 86400000 // 结束时间时间戳
      let startTimeStr = this.timestampToTime(this.startTimeNum) // 时间戳转字符串
      let endTimeStr = this.timestampToTime(this.endTimeNum)
      this.weekTime = startTimeStr + '  -  ' + endTimeStr // 选择的范围
      console.log(this.weekTime) // 2021-11-15   -  2021-11-21 
    }
  }
}
</script>

如果想要回显,可以在mounted生命周期中调用this.changeweek(),传入中国标准时间。如果要传入yyyy-mm-dd格式的时间需要使用new Date进行格式化。

  mounted() {
    let val = new Date('2019-11-2') //如果要回显的话只需传入开始时间
    this.changeweek(val)
  }

参考文章https://blog.csdn.net/weixin_45695727/article/details/108694785

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值