当前位置:   article > 正文

Element UI DatePicker 日期选择器_elemuntui选择日的控件

elemuntui选择日的控件

该组件选择周的时候,默认显示‘xxxx年第x周’,但在需求要显示为‘xxxx年x月第x周(mm.dd - mm.dd)’或者‘本周(mm.dd - mm.dd)’,最终效果为

  1. 首先需要修改v-model默认展示日期,控件中默认展示为周二,设置picker-options,修改为周一,

同时设置不可选本周日以后的时间:

  1. <el-date-picker
  2. v-model="weekValue1"
  3. type="week"
  4. :format="thisweek + '(' + start2 + ' - ' + end2 + ')'"
  5. @change="showDate1"
  6. :picker-options="onPicker" // 设置picker-options
  7. placeholder="选择周"
  8. :clearable="false">
  9. </el-date-picker>
  1. onPicker: {
  2.     firstDayOfWeek: 1, // 周起始日为星期一
  3.     disabledDate (value) {
  4.       const today = new Date(); // 获取今天日期
  5.       const d = today.getDay(); // 计算今天是周几。如果是周天,d=0
  6.       let w = 0;
  7.       if (d === 0) {
  8.         w = 7;
  9.       } else {
  10.         w = d;
  11.       }
  12.       // let startTime = today.setDate(today.getDate() - w);
  13.       // return value.getTime() < startTime; //不可选本周一以前的时间
  14.       const endTime = today.setDate(today.getDate() + (7 - w));
  15.       return value.getTime() > endTime; // 不可选本周日以后的时间
  16.     }
  17. },
  1. 设置显示为‘xxxx年x月第x周(mm.dd - mm.dd)’和format有关,

  1. :format="thisweek + '(' + start2 + ' - ' + end2 + ')'"
  2. @change="showDate1"

用@change绑定showDate1方法控制thisweek,start2,end2。


这里介绍一个轻量的处理时间和日期的 JavaScript 库:Day.js

中文文档:Day.js · 中文文档 - 2kB 大小的 JavaScript 时间日期库

vue下安装和使用:在main.js下:

  1. import dayjs from 'dayjs';
  2. Vue.prototype.dayjs = dayjs;
直接调用dayjs() 将返回一个包含当前日期和时间的 Day.js 对象。
等同于 dayjs(new Date()) 的调用。
dayjs(e) 等同 dayjs(new Date(e))

subtract(1, 'day') 方法: 返回减去一定时间的复制的 Day.js 对象。减去1天,控件展示为周一的日期。

add(6, 'day')方法: 返回增加一定时间的复制的 Day.js 对象。加上6天,控件展示为周日的日期。

  1. showDate1 (e) {
  2. const startTime = this.dayjs(e).subtract(1, 'day').$d;
  3. const endTime = this.dayjs(startTime).add(6, 'day').$d;
  4. this.start2 = this.splitDate2(startTime);
  5. this.end2 = this.splitDate2(endTime);
  6.   this.weekValue1 = new Date()
  7. const y = this.weekValue1.getFullYear()
  8. const m = this.weekValue1.getMonth() + 1
  9. const d = this.weekValue1.getDate()
  10. this.lastweekday = new Date(this.dateToYYYYMMDD(this.weekValue1 - 7 * 24 * 60 * 60 * 1000)) // 所选周上周的日期
  11. this.lastweek = this.lastweekday.getFullYear() + '年' + (this.lastweekday.getMonth() + 1) + '月第' + this.getMonthWeek(this.lastweekday.getFullYear(), (this.lastweekday.getMonth() + 1), this.lastweekday.getDate()) + '周'
  12. if (this.weekValue1.getFullYear() === y && this.weekValue1.getMonth() + 1 === m && this.getMonthWeek(y, m, this.weekValue1.getDate()) === this.getMonthWeek(y, m, d)) {
  13. this.thisweek = '本周'
  14. } else {
  15. this.thisweek = y + '年' + m + '月第' + this.getMonthWeek(y, m, d) + '周'
  16. }
  17. },
  18. // 处理时间格式
  19. splitDate2 (date) {
  20. return this.dayjs(date).format('MM.DD');
  21. },
  22. // 计算某日是第几周
  23. getMonthWeek (a, b, c) {
  24. const date = new Date(a, parseInt(b) - 1, c)
  25. const day = date.getDay() || 7
  26. const d = date.getDate()
  27. return Math.ceil((d + 6 - day) / 7)
  28. },
  29. // 时间戳返回 yyyy-MM-dd 格式字符串
  30. dateToYYYYMMDD (date) {
  31. const time = new Date(date);
  32. const y = time.getFullYear();
  33. let m = (time.getMonth() + 1);
  34. m = m > 9 ? m : '0' + m;
  35. let d = time.getDate();
  36. d = d > 9 ? d : '0' + d;
  37. return y + '-' + m + '-' + d
  38. },

参考:Vue使用Element的日期选择器DatePicker,以周为单位_el-date-picker的type为week-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/97635
推荐阅读
相关标签
  

闽ICP备14008679号