element-plus时间选择范围限制

小鱼儿心语:在草原上,做什么事都别做绝,兔子急了还咬狼呢,母狼急了能不拼命吗?不只是草原,任何时候任何地点,做任何事情,都不能把事情做得很绝,因为没人知道未来会发生什么,我们常说“凡事留一线,日后好相见”说的就是这个道理。世事难料,也许这一次的帮忙,会是你未来人生转折的重要助力呢。
一、当天及后七天的日期
当天及七天后.png
<template>
  <div class="app-container">
    <el-date-picker clearable
      v-model="form.examDate"
      type="date"
      value-format="YYYY-MM-DD"
      placeholder="请选择检查日期"
      :disabled-date="disabledDateFun"
      style="width: 340px;"
      :disabled="islook">
    </el-date-picker>
  </div>
</template>

<script setup>
  import { ref } from "vue";
  const { proxy } = getCurrentInstance();
  const disabledDateFun = (time) => {
    const date1 = new Date()
    const date2 = new Date(date1);
    date2.setDate(date1.getDate()+6);  
    if (time.getTime()<= new Date().getTime()-8.64e7||time.getTime()>date2.getTime()) {
      return time.getTime()<= new Date().getTime()-8.64e7||time.getTime()>date2.getTime(); //时间范围必须是时间戳
    } else {
      return time.getTime() < Date.now() - 30 * 8.64e7||time.getTime()>date2.getTime(); //8.64e7就是一天的时间戳 24*60*60*1000 
    }
  }
</script>
二、近30天日期
近30天日期.png
<template>
  <div class="demo-date-picker">
    <div class="block">
      <el-date-picker
        v-model="value1"
        type="daterange"
        range-separator="To"
        start-placeholder="Start date"
        end-placeholder="End date"
        :disabled-date="disabledDateFun"
      />
    </div>
  </div>
</template>

<script setup>
import { ref } from 'vue'

const value1 = ref('')

const disabledDateFun = (time) => {
  if (time.getTime() > new Date().getTime()) {
    return time.getTime() >= new Date().getTime(); //时间范围必须是时间戳
  } else {
    return time.getTime() < Date.now() - 30 * 8.64e7; //8.64e7就是一天的时间戳 24*60*60*1000 
  }
}

</script>
三、当前月份及之前的月份的日期
当前月份及之前的月份.png
<template>
  <div class="app-container">
    <el-date-picker 
      v-model="queryParams.yMonth" 
      type="month" 
      format="YYYY-MM" 
      value-format="YYYY-MM" 
      @change="handleQuery" 
      :disabled-date="disabledDateFun"/>
  </div>
</template>

<script setup>
  import { ref } from "vue";
  const { proxy } = getCurrentInstance();
  const disabledDateFun = (time) => {
    if (time.getTime()> new Date().getTime()) {
      return time.getTime()> new Date().getTime(); //时间范围必须是时间戳
    }
  }
</script>
四、当前月份及之前的12个月份的日期--添加开始月份默认为当月的前12个月(例如2022-12),结束月份为当前月份(例如2023-11)
当前月份及之前的12个月份.png
<template>
  <div class="app-container">
    <el-date-picker
       v-model="queryParams1.date"
       type="monthrange"
       range-separator="至"
       start-placeholder="开始日期"
       end-placeholder="结束日期"
       @change="changetime"
     />
  </div>
</template>

<script setup>
  import { ref } from "vue";
  const { proxy } = getCurrentInstance();
  const data = reactive({
    queryParams1:{
      date:[]
    }
  });
  const {queryParams1 } = toRefs(data);
  onMounted(() => {
    gettime()
  })
  function gettime(){
    //获取新的时间(2019.4.12)
    let date = new Date()
    //获取当前时间的年份转为字符串
    let endYear = date.getFullYear().toString()   //'2019'
    let staYear = endYear
    //获取月份,由于月份从0开始,此处要加1,判断是否小于10,如果是在字符串前面拼接'0'
    let staMonth = 0
    let endMonth = date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1).toString():(date.getMonth()+1).toString()  //'04'
    if(date.getMonth()+1 == 12){
        staYear = (date.getFullYear()).toString()
        staMonth = (1).toString()
        staMonth = staMonth < 10 ? '0'+staMonth:staMonth
    }else {
        // staMonth = date.getMonth() < 10 ? '0'+(date.getMonth()).toString():(date.getMonth()).toString()  //'04'
        staYear = (date.getFullYear()-1).toString()
        staMonth = ((date.getMonth()+1)+1).toString()
        staMonth = staMonth < 10 ? '0'+staMonth:staMonth
    }
    //字符串拼接,开始时间,结束时间
    let end = endYear + '-' + endMonth   //当月2019-04 
    let beg = staYear + '-' + staMonth    //当月减3 2019-01
    queryParams.value.EDate=end
    queryParams.value.SDate=beg //将值设置给插件绑定的数据
    queryParams1.value.date.push(beg,end)
  }
</script>
五、可选范围为:指定的某一天开始到---两个月后的日期
<template>
  <div class="app-container">
    <el-date-picker
       v-model="form.fshz"
       type="date"
       placeholder="请选择复审换证日期"
       :picker-options="pickerOptions"
       style="width:30%">
    </el-date-picker>
 </div>
</template>

<script>
export default {
    data() {
      const startime = this.$route.query.start    // 为某天的日期
        return {
            pickerOptions: {
                disabledDate(time) {
                    if(time){
                        const date1 = new Date(startime.slice(0,10))    // YYYY-MM-DD
                        const date2 = new Date(date1);
                        date2.setDate(date1.getDate()+60);              // 60天两个月内
                        if (time.getTime()<= new Date(startime.slice(0,10)).getTime()-8.64e7||time.getTime()>date2.getTime()) {
                            return time.getTime()<= new Date(startime.slice(0,10)).getTime()-8.64e7||time.getTime()>date2.getTime(); //时间范围必须是时间戳
                        } else {
                            return time.getTime() < Date.now(startime.slice(0,10)) - 30 * 8.64e7||time.getTime()>date2.getTime(); //8.64e7就是一天的时间戳 24*60*60*1000 
                        }
                    }
                },
            },
        }
    }
</script>
六、日期格式转换
formatDate(time) {
      // const date = new Date() //   Wed Aug 26 2020 11:14:44 GMT+0800 (中国标准时间)
      const date = new Date(time)
      // 设置时间转换格式
      var y = date.getFullYear() // 获取年
      var m = date.getMonth() + 1 // 获取月
      m = m < 10 ? '0' + m : m // 判断月是否大于10
      var d = date.getDate() // 获取日
      d = d < 10 ? '0' + d : d // 判断日期是否大10
      let h = date.getHours() // 11
      h = h < 10 ? '0' + h : h // 判断日期是否大10
      let mm = date.getMinutes() // 14
      mm = mm < 10 ? '0' + mm : mm // 判断日期是否大10
      let s = date.getSeconds() // 44
      s = s < 10 ? '0' + s : s // 判断日期是否大10
      return y + '-' + m + '-' + d + ' ' + h + ':' + mm + ':' + s // 返回时间格式
}
七、指定的某一天往后的第15天的日期
var strdate = new Date(this.startime);     // this.startime为某一天的日期
var begindate = strdate.getTime();
var enddate = begindate + (15*24*60*60*1000);
var str = this.getTimeNow(enddate)         // 第15天的日期
this.form.fshz = str
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,270评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,489评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,630评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,906评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,928评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,718评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,442评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,345评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,802评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,984评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,117评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,810评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,462评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,011评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,139评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,377评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,060评论 2 355

推荐阅读更多精彩内容