element-ui限制时间插件el-date-picker的开始时间和结束时间之间间隔30天

项目中有个需求,开始时间选中后,结束时间自动填充成30天后的时间<当然,如果30天后的时间比当前时间大,那么填充当前时间到结束时间>。结束时间选中时,开始时间自动填充为结束时间的前30天

效果如下图所示:

代码如下:

1.html部分

<el-date-picker
   v-model="query.startDate"
   :clearable="false"
   type="date"
   format="yyyy-MM-dd"
   value-format="yyyy-MM-dd"
   :picker-options="pickerOptionsStart"
   placeholder="开始时间"
   @change="handleStart"
/>
 --
<el-date-picker
   v-model="query.endDate"
   :clearable="false"
   type="date"
   format="yyyy-MM-dd"
   value-format="yyyy-MM-dd"
   :picker-options="pickerOptionsEnd"
   placeholder="结束时间"
   @change="handleEnd"
/>

2.data部分

query: {
   startDate: '',// 开始日期,显示在弹框里的
   endDate: '', // 结束日期,显示在弹框里的
   endDateNow: '', // 当前日期,如果30天后的日期大于当前日期,要显示当前日期
},

3.创建组件时,给2中的data部分变量赋值时间为当前时间

created() {
    const date = new Date()
    this.query.startDate = moment(date).format('YYYY-MM-DD') // 开始时间
    this.query.endDate = moment(date).format('YYYY-MM-DD') // 结束时间
    this.query.endDateNow = moment(date).format('YYYY-MM-DD') // 当前结束时间
  },

4.当选中时间发生变化时, methods部分

methods: {
    /**
     * 获取当前时间前几天或后几天时间
     * @param today  当前时间
     * @param day  day为number,getDay(-1):昨天的日期;getDay(0):今天的日期;getDay(1):明天的日期;【以此类推】
     * @returns {string}
     */
    getDay(today, day) {
      // var today = new Date();
      const targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;
      today.setTime(targetday_milliseconds); // 注意,这行是关键代码

      const tYear = today.getFullYear();
      let tMonth = today.getMonth();
      let tDate = today.getDate();
      tMonth = this.doHandleMonth(tMonth + 1);
      tDate = this.doHandleMonth(tDate);
      return tYear + '-' + tMonth + '-' + tDate;
    },
    doHandleMonth(month) {
      var m = month;
      if (month.toString().length == 1) {
        m = '0' + month;
      }
      return m;
    },
    // 开始时间点击
    handleStart() {
      const oDate1 = new Date(this.getDay(new Date(this.query.startDate), 30)) // 选中的开始时间后30天
      const oDate2 = new Date() // 当前时间
      if (oDate1.getTime() > oDate2.getTime()) { // 如果30天后时间比前时间大,显示当前时间
        this.query.endDate = this.query.endDateNow
      } else { // 否则显示选中开始时间30天后的时间
        this.query.endDate = this.getDay(new Date(this.query.startDate), 30)
      }
    },
    // 结束时间点击
    handleEnd() {
      this.query.startDate = this.getDay(new Date(this.query.endDate), -30) // 结束时间选中后,开始时间显示结束时间前30天
    }
  }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
限制el-date-picker时间间隔,你可以使用picker-options属性来设置。在引用和中的示例中,我们可以看到picker-options属性被用于设置开始时间结束时间限制。具体的方法是,在picker-options中使用disabledDate属性来定义一个函数,该函数返回一个布尔值,用于判断日期是否可选。如果返回true,表示该日期不可选,如果返回false,表示该日期可选。通过在disabledDate函数中进行判断,你可以设置开始时间结束时间之间时间间隔限制。例如,你可以在disabledDate函数中使用moment.js库来比较日期和时间。使用moment.js的isBefore和isAfter方法,你可以判断选择的日期是否在指定的时间范围内。如果在范围外,就返回true,禁用该日期。如果在范围内,就返回false,允许选择该日期。这样就可以实现el-date-picker时间间隔限制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [element时间选择el-date-picker日期时间限制](https://blog.csdn.net/dakuzi/article/details/129136170)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [element-ui限制时间插件el-date-picker的开始时间结束时间之间间隔30天](https://blog.csdn.net/qq_36509946/article/details/122716420)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值