element el-date-picker 时间获取周数 错误

 element el-date-picker   时间获取周数 错误

html代码

   <el-date-picker v-model="replenishCapacityFrom.startWeek"
                                  type="week"
                                  format="yyyy 第 WW 周"
                                  placeholder="开始周">
                  </el-date-picker>

取值  js代码

this.getYearWeek(值)

给控件赋值 js代码

this.weekToDate(值)

需要的方法 没有精简  自行精简

// 获取一年中第几周
    getYearWeek (date) {
      let aa = this.dateWeekMax(date)
      date = new Date(aa)
      date = this.dateFtt('yyyy-MM-dd', date) // 将日期转换成yyyy-mm-dd格式
      date = new Date(date)
      let date2 = new Date(date.getFullYear(), 0, 1)
      let day1 = date.getDay()
      if (day1 === 0) day1 = 7
      let day2 = date2.getDay()
      if (day2 === 0) day2 = 7
      let d = Math.round((date.getTime() - date2.getTime() + (day2 - day1) * (24 * 60 * 60 * 1000)) / 86400000)
      return date.getFullYear() + '-' + (Math.ceil(d / 7) + 1)
    },
    //时间类型格式化
    dateFtt (fmt, date) {
      let o = { 'M+': date.getMonth() + 1, 'd+': date.getDate(), 'h+': date.getHours(), 'm+': date.getMinutes(), 's+': date.getSeconds(), 'q+': Math.floor((date.getMonth() + 3) / 3), 'S': date.getMilliseconds() }
      if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)) }
      for (let k in o) { if (new RegExp('(' + k + ')').test(fmt)) { fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))) } }
      return fmt
    },
    //能取日期周的 第一天和最后一天  element ui时间控件周是按照最后一天计算的
    dateWeekMax (date) {
      let now = new Date(date)
      let nowTime = now.getTime()
      let day = now.getDay()
      let oneDayTime = 24 * 60 * 60 * 1000
      // let MondayTime = nowTime - (day - 1) * oneDayTime// 显示周一
      let SundayTime = nowTime + (7 - day) * oneDayTime// 显示周日
      // console.log(new Date(MondayTime))
      // console.log(new Date(SundayTime))
      return SundayTime
    },
    //2019-8 年加周数改成时间
    weekToDate (date) {
      let year = date.split('-')[0]
      let week = date.split('-')[1]
      if (year === '' || week === '') return
      let d = new Date(year, 0, 1)
      d.setDate(parseInt('1065432'.charAt(d.getDay())) + week * 7)
      let fe = this.getFirstAndEnd(d)
      return fe
    },
    //上面函数调用此方法  给出时间格式 周日 因为element ui 用的周末计算的
    getFirstAndEnd (d) {
      let w = d.getDay()
      let n = 24 * 60 * 60 * 1000
      let end = new Date(d.getTime() + parseInt('0654321'.charAt(w)) * n)
      end = end.setDate(end.getDate() - 7)
      return end
    }




欢迎分享,(联系QQ/微信:996991818)

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论