Vue3+ element Plus中,实现el-date-picker限制时间选择范围(7天)

注意坑element Plus 没有picker-options配置项,可以使用 :disabled-date="disabledDate" @calendar-Change="calendarChange" 配合实现

废话不多说,直接上代码!

<el-form-item label="创建时间" prop="createTime">
        <el-date-picker
              v-model="queryParams.createTime"
              value-format="YYYY-MM-DD HH:mm:ss"
              type="datetimerange"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
              class="!w-240px"
               :disabled-date="disabledDate"
               @calendar-Change="calendarChange"
            />
      </el-form-item>
const disabledDate = (time:any)=>{
  // 如何选择了一个日期
  if (choiceDate.value) {
      // 7天的时间戳
      const one = 6 * 24 * 3600 * 1000;
      // 当前日期 - one = 7天之前
      const minTime = choiceDate.value - one;
      // 当前日期 + one = 7天之后
      const maxTime = choiceDate.value + one;
      return (
        time.getTime() < minTime ||
        time.getTime() > maxTime
        // 限制不能选择今天及以后
        // || time.getTime() + 1 * 24 * 3600 * 1000 > Date.now()
      );
    } else {
      // 如果没有选择日期,就要限制不能选择今天及以后
      // return time.getTime() + 1 * 24 * 3600 * 1000 > Date.now();
    }
}
const calendarChange = (obj:any)=>{
  const minDate = obj[0]
  const maxDate = obj[1]
  // 把选择的第一个日期赋值给一个变量。
  choiceDate.value = minDate.getTime();
  // 如何你选择了两个日期了,就把那个变量置空
  if (maxDate) choiceDate.value = null;
}

实现后的效果:

点击后,时间的前七天、后七天。

Vue 3中使用Element Plus的`el-date-picker`组件时,日期格式的转换通常发生在数据绑定或事件处理程序中,比如从组件获取用户选择的日期并将其格式化为特定的字符串格式,或者将外部传递的字符串转换为日期对象以便于处理。 `el-date-picker`默认的日期格式是ISO 8601标准(YYYY-MM-DD),但你可能需要根据需求转换为其他格式,如"yyyy年MM月dd日"、"MM/dd/yyyy"等。这可以通过JavaScript的内置方法`Date`对象的方法来实现。 例如,假设你想要将用户选择的日期格式化为"yyyy年MM月dd日": ```javascript <template> <el-date-picker v-model="selectedDate" :format="dateFormat"></el-date-picker> </template> <script> export default { data() { return { selectedDate: &#39;&#39;, dateFormat: &#39;yyyy年MM月dd日&#39;, }; }, created() { // 如果需要,可以在这个生命期钩子里处理初始值或转换格式 this.selectedDate = this.convertToFormat(new Date()); // 假设convertToFormat是个自定义方法 }, methods: { convertToFormat(date) { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, &#39;0&#39;); const day = String(date.getDate()).padStart(2, &#39;0&#39;); return `${year}年${month}月${day}日`; }, }, }; </script> ``` 如果你想在用户输入后立即转换格式,可以在`v-model`的更新事件中调用转换方法: ```javascript <template> <el-date-picker v-model="inputDate" @input="formatInputDate"></el-date-picker> </template> <script> export default { data() { return { inputDate: &#39;&#39;, }; }, methods: { formatInputDate(value) { this.inputDate = this.convertToFormat(value); }, convertToFormat(date) { ... // 与上面的convertToFormat相同 }, }, }; </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值