首页 > 其他分享 >【Element-UI】时间/日期选择器选择禁用当前之前(之后)时间

【Element-UI】时间/日期选择器选择禁用当前之前(之后)时间

时间:2023-05-22 10:02:03浏览次数:34  
标签:return Element UI 当前 time Date now 8.64 选择器

01.日期选择
<template>

  <div>

    <el-date-picker

      format="yyyy-MM-dd"

      value-format="yyyy-MM-dd"

      type="date"

      placeholder="请选择日期"

      v-model="dayDate"

      :picker-options="setDisabled"

    ></el-date-picker>

  </div>

</template>

  
<script>

export default {

  data() {

    return {

      dayDate: "",

      setDisabled: {

        // 返回禁用时间

        disabledDate(time) {

          return time.getTime() > Date.now();  // 可选历史天、可选当前天、不可选未来天

          // return time.getTime() > Date.now() - 8.64e7;  // 可选历史天、不可选当前天、不可选未来天

          // return time.getTime() < Date.now() - 8.64e7;  // 不可选历史天、可选当前天、可选未来天

          // return time.getTime() < Date.now(); // 不可选历史天、不可选当前天、可选未来天

        },

      },

    };

  },

  /*

    8.64e7 是科学计数法 8.64乘以10的7次方,即为86400000也就是 1000*60*60*24 也就是一天的毫秒数。因为Date.now()

    方法能够返回得到自1970年1月1日00:00:00(UTC)到当前时间的毫秒数。咱们是北京时间的时区,也就是为东8区,

    起点时间对应就是:"1970/01/01 08:00:00"

    picker-options需要一个最终的布尔值,所以是否减去8.64e7也就是是否往前推移一天,也就是是否包含当前的天数

  */

};

</script>
02.月份选择
<template>

    <div>

        <el-date-picker

          v-model="value"

          type="monthrange"

          value-format="yyyy-MM"

          format="yyyy-MM"

          :picker-options="setMonthDisabled"

          range-separator="至"

          start-placeholder="开始时间"

          end-placeholder="结束时间">

        </el-date-picker>

    </div>

</template>

  
<script>

export default {

    data() {

        return {

            value: "",

            setMonthDisabled: {

              // 返回禁用时间

              disabledDate(time) {

                // 获取当前的月份信息

                const date = new Date(); // 获取当前的时间基本信息,值是这样的: Tue Jul 20 2021 14:59:43 GMT+0800 (中国标准时间)

                const year = date.getFullYear(); // 获取当前年份,值是这样的: 2021

                let month = date.getMonth() + 1; // 获取当前月份,值是这样的: 6   getMonth()方法返回值是0-11,也就是1月份到12月份,所以要加上1,才是当前月份

                if (month >= 1 && month <= 9) {

                  // 如果是1月到9月就要在前面补上一个0   比如:02、07    月份这样表示

                  month = "0" + month;

                }

                const nowDate = year.toString() + month.toString(); // 转换成字符串拼接,最终得到年和月,比如此时的时间是2021年7月20号,所以nowDate的值是:202107

      

                // 获取时间选择器的月份信息

                const timeyear = time.getFullYear(); // 获取时间选择器的年份(有很多)

                let timemonth = time.getMonth() + 1; // 与上面同理

                if (timemonth >= 1 && timemonth <= 9) {

                  timemonth = "0" + timemonth;

                }

                const elTimeData = timeyear.toString() + timemonth.toString();

      

                // 返回,时间选择器的日期月份大于当前日期的月份,又因为disabledDate函数是控制月份禁用不可选

                // 所以,最终就是:时间选择器的月份大于当前的月份,就都禁用掉,所以就实现了最终效果:

                // 小于等于当前月份都不可选  
                return elTimeData <= nowDate; // 这里虽然是字符串,但是弱类型语言js会做一个转换,是可以比较大小的如: '202107' > '202008'

              },

            },    

        }

    }

}

</script>

标签:return,Element,UI,当前,time,Date,now,8.64,选择器
From: https://blog.51cto.com/u_15978456/6321020

相关文章

  • Java的GUI窗体出现中文不能正确显示解决方法
    问题描述:用java做一个图形化界面的程序,在Eclipse上运行后中文显示方框,如下图所示:解决方法:在要运行的代码上右键RunAs-->RunConfigurations...在Arguments-->VMarguments:中增加下面这句:-Dfile.encoding=gbk点击Apply,然后运行  成功显示中文......
  • 使UIScrollView的子控件在scrolling的过程中,子控件不滚动(固定在某个位置)
    使UIScrollView的子控件在scrolling的过程中,子控件不滚动(固定在某个位置)受本篇问答的启发http://stackoverflow.com/questions/11272847/make-uiview-in-uiscrollview-stick-to-the-top-when-scrolled-up修改代码如下注意:使UIScrollView的子控件self.letter在scrolling的过程中,子......
  • clayui界面库系列教程之五:仿QQ2010风格的登录下拉框
    预览图如下:                        例子工程下载        这次的例子工程是CLAYUIEXP2,与以前的苹果风格按钮是一个工程,所以在本教程里,关于初始化之类的就不详细解说了,有疑问的请查看本博客内的其他教程        好的,教程开始了。 ......
  • Revit二次开发实战04(元素搜集过滤器FilteredElementCollector)
    Revit二次开发实战 FilteredElementCollector元素搜集过滤器1、创建搜集器FilteredElementCollector(Document);搜集文档中所有元素;FilteredElementCollector(Document,List<ElementId>);在指定id集合中搜集;FilteredElementCollector(Document,ElementIdviewId);在......
  • 04-多路选择器
    1.多路选择器组合逻辑是Verilog设计中的一个重要组成部分,从电路本质上讲,组合逻辑电路的特点是输出信号只是当前时刻输入信号的函数,与其他时刻的输入状态无关,无存储电路,也没有反馈电路组合逻辑电路输出信号的电平变化仅仅与输入信号的电平变化有关,不涉及信号跳变沿的处理......
  • 基础选择器之标签选择器
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-equiv="X-UA-Compatib......
  • 袋鼠云数栈UI5.0焕新升级,全新设计语言DT Design,更懂视觉更懂你!
    数栈作为袋鼠云打造的一站式数据开发与治理平台,从2016年发布第⼀个版本开始,就始终坚持着以技术为核⼼、安全为底线、提效为⽬标、中台为战略的思想,坚定不移地⾛国产化信创路线,不断推进产品功能迭代、技术创新、服务细化和性能升级。伴随业务的⻜速发展,数栈设计团队也启动了针对数栈......
  • Google Earth Engine(GEE)——全球建筑物数据集(MSBuildings数据集)包含微软7.77忆建筑物
    全球ML建筑脚印必应地图正在发布全球范围内的公开建筑脚印。我们从2014年至2021年的Bing地图图像中检测到777M的建筑,包括Maxar和Airbus的图像。为了完整起见,早期发布的数据集也包括在这个数据集中,并被纳入其中。你可以在这里找到Githubrepo和关于方法的更多信息。数据集是压缩的,......
  • 实现 React 简易版 createElement 和 render 方法
    前言在React中,我们都知道可以写jsx代码会被编译成真正的DOM插入到要显示的页面上。这具体是怎么实现的,今天我们就自己动手做一下。实现createElement方法这个方法平时开发我们并不会用到,因为它是经babel编译后的代码,我们新建一个React项目,index.js最简单的代码结构如......
  • Field userClient in com.demo.order.service.OrderService required a bean of type'
    在SpringCloud项目中使用Feign进行远程调用遇到的错误。原因是因为UserClient在com.demo.feign.clients包下面,而order-service的@EnableFeignClientd注解却在com.demo.order包下面,这两个不在同一个包下,无法扫描到UserClient。解决方法有两种1.指定Feign应该扫描的包@EnableFeig......