weui datepicker 最后一个年份的12月只有30号

weui官方参考文档
https://github.com/Tencent/weui.js/blob/master/docs/component/picker.md
https://github.com/Tencent/weui/blob/master/README_cn.md

在项目中关于到一个bug,直接使用weui的datepicker,年份限制在本年,但是12月却没有31号


weui datepicker 最后一个年份的12月只有30号_第1张图片
let picker = this.$weuijs.datePicker({
            defaultValue: this.currDate.split('-'),
            start: new Date(), // 从今天开始4d
            end: new Date().getFullYear(),
            onConfirm: (result) => {
              this.currDate = result
                .map(item => (+item.value < 10 ? `0${item.value}` : item.value))
                .join('-')
              this.showDate = `${result[1].label}`+ `${result[2].label}`
              setTimeout(()=>{
                this.selectTime(result)
              }, 400)
            },
            id: 'datePicker'
          })

方案一:(失败的方案)

修改成
终点就是 end: new Date(`Fri Dec 31 ${year} 23:59:99 GMT+0800 (中国标准时间)`),

weui datepicker 最后一个年份的12月只有30号_第2张图片

          let year = new Date().getFullYear()
          let picker = this.$weuijs.datePicker({
            defaultValue: this.currDate.split('-'),
            start: new Date(), // 从今天开始4d
            end: new Date(`Fri Dec 31 ${year} 23:59:99 GMT+0800 (中国标准时间)`),
            onConfirm: (result) => {
              this.currDate = result
                .map(item => (+item.value < 10 ? `0${item.value}` : item.value))
                .join('-')
              this.showDate = `${result[1].label}`+ `${result[2].label}`
              setTimeout(()=>{
                this.selectTime(result)
              }, 400)
            },
            id: 'datePicker'
          })

方案一在电脑上运行没有问题,但是升级到微信上,发现页面就会卡死,这样子的写可能还是超出的时间范围。

方案二

然后直接指定开始和结束时间,一开始,我将结束时间改成‘2019-12-31’,但是发现并没有生效,
然后我升级weui 从1.1.2到1.1.3,但是发现还是不生效;
看了官方文档觉得起点时间和结束时间都应该同一类型
所以将start改成了‘2019-01-01’就生效了
![](https:/
/upload-images.jianshu.io/upload_images/2418690-bac1266f4a464bf8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
最终代码呈现如下,问题完美解决

selectDate () {
          let today = this.mixin_time_get_today(true)
          let year = new Date().getFullYear()
          let picker = this.$weuijs.datePicker({
            defaultValue: this.currDate.split('-'),
            start: today, // 从今天开始4d
            end: `${year}-12-31`,
            onConfirm: (result) => {
              this.currDate = result
                .map(item => (+item.value < 10 ? `0${item.value}` : item.value))
                .join('-')
              this.showDate = `${result[1].label}`+ `${result[2].label}`
              setTimeout(()=>{
                this.selectTime(result)
              }, 400)
            },
            id: 'datePicker'
          })
        },

划重点:
1、升级weui到1.1.3
2、start和end都指定为字符串类型

你可能感兴趣的:(weui datepicker 最后一个年份的12月只有30号)