vue element日期格式、范围限制

33 篇文章 1 订阅
21 篇文章 1 订阅

第一种:选择时间和选择日期可以切换,当前日期之前的不能选择,开始时间和结束时间进行比较
在这里插入图片描述
当全天关闭时开始时间和结束时间可以选择带时间的日期,当全天开启时开始时间和结束时间只能选择日期,

<template>
  <div>
		<el-form
		      class="abow_dialog"
		      :model="ruleForm"
		       ref="ruleForm"
		      :rules="rules"
		      label-width="180px"
		    >
	   <el-form-item label="全天:" prop="newIsDay">
          <el-switch v-model="newIsDay"  @change="isDaySwitch()"></el-switch>
        </el-form-item>
        <el-form-item label="开始时间:" :required="true">
          <el-col :span="11">
            <el-form-item prop="beginTime">
              <el-date-picker time-arrow-control :type="dateTimeShow?'datetime':'date'" :format="dateTimeShow?'yyyy-MM-dd HH:mm':'yyyy-MM-dd'" :value-format="dateTimeShow?'yyyy-MM-dd HH:mm:ss':'yyyy-MM-dd'" :default-time="nowTime" placeholder="选择日期时间" v-model="ruleForm.beginTime" :picker-options="expireTimeOption" style="width: 100%;"></el-date-picker>
            </el-form-item>
          </el-col>
        </el-form-item>
        <el-form-item label="结束时间:" :required="true">
          <el-col :span="11">
            <el-form-item prop="endTime">
              <el-date-picker time-arrow-control :type="dateTimeShow?'datetime':'date'" :format="dateTimeShow?'yyyy-MM-dd HH:mm':'yyyy-MM-dd'" :value-format="dateTimeShow?'yyyy-MM-dd HH:mm:ss':'yyyy-MM-dd'" :default-time="nowNextTime" placeholder="选择日期时间" v-model="ruleForm.endTime" :picker-options="expireTimeOption" style="width: 100%;"></el-date-picker>
            </el-form-item>
          </el-col>
        </el-form-item>
		</el-form>
	</div>
</template>
<script>
  export default {
    data(){
      var validatebeginTime=(rule, value, callback) =>{
        if(value == null){
          callback(new Error('请选择日期'));
          return;
        }
        if(this.ruleForm.endTime != ''){
          if(
            this.ruleForm.endTime.replace(/-/g,"\/")
            <
            this.ruleForm.beginTime.replace(/-/g,"\/")
          ){
            callback(new Error('开始日期不能大于结束日期'));
            return;
          }
        }
        if(this.newIsDay == false){
          if(this.ruleForm.beginTime!=""){
            var regex=/\b(0+)/gi
            var choiceTimeHours =  this.ruleForm.beginTime.slice(10,13)
            //09去掉0
            var newChoiceTimeHours = (choiceTimeHours+'').replace(regex,"")
            var nowTimeHours =  parseInt(newChoiceTimeHours)+1
            var nowTimeMinutes =  this.ruleForm.beginTime.slice(14,16)
            this.nowNextTime =nowTimeHours+':'+nowTimeMinutes+':00'
          }
        }
        callback();
      }
      var validateendTime=(rule, value, callback) =>{
        if(value == null){
          callback(new Error('请选择日期'));
          return;
        }
        //时间比较
        if(
          this.ruleForm.endTime.replace(/-/g,"\/")
          <
          this.ruleForm.beginTime.replace(/-/g,"\/")
        ){
          callback(new Error('结束日期不能小于开始日期'));
          return;
        }
        callback();
      }
      return {
        nowTime:"",
        nowNextTime:"",
        dateTimeShow:true,
        newIsDay:false,
        ruleForm: {
          isDay:"0",
          beginTime:"",
          endTime:"",
        },
        rules: {
          beginTime: [
                { required: true, validator: validatebeginTime, trigger: 'change' }
              ],
              endTime: [
                { required: true, validator: validateendTime, trigger: 'change' }
              ]
        },
        //今天之前的日期不能选择
        expireTimeOption: {
          disabledDate(date) {
            return date.getTime() < Date.now() - 24 * 60 * 60 * 1000;
          }
        }
      }
    },
    created(){
		  this.Time();
	  },
    methods: {
    	//控制全天
	  	isDaySwitch(){
         this.$nextTick(()=>{
            if(this.newIsDay == true){
              this.ruleForm.isDay = "1";
              this.dateTimeShow = false;
              this.ruleForm.beginTime = ""
              this.ruleForm.endTime = ""
            }else if(this.newIsDay == false){
              this.ruleForm.isDay = "0";
              this.dateTimeShow = true;
              this.ruleForm.beginTime = ""
              this.ruleForm.endTime = ""
            }
          })
        },
        Time(){
          this.nowTime ='09:00:00'
        },
	  },
  }
</script>

第二种:datetimerange只能选择当前日期之前的日期和时间,
在这里插入图片描述

<template>
  <div>
		<el-form
		  class="abow_dialog"
		  :model="ruleForm"
		  ref="ruleForm"
		  :rules="rules"
		  label-width="180px"
		>
	   <el-form-item label="日期:"  prop="value">
        <el-date-picker
            v-model="ruleForm.value"
            type="datetimerange"
            time-arrow-control
            format="yyyy-MM-dd HH:mm:ss"
            value-format="yyyy-MM-dd HH:mm:ss"
            :default-time="['08:30:00', '17:30:00']"
            :picker-options="expireTimeOption"
            range-separator="至"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
            style="width: 100%;"
        >
          </el-date-picker>
      </el-form-item>
		</el-form>
	</div>
</template>
<script>
  export default {
    data(){
      let _this = this;
      return {
        ruleForm: {
          value: '',
        },
        rules: {
          value:[
            { required: true, message: '请选择日期', trigger: 'change' },
          ],
        },
        expireTimeOption: {
          disabledDate(time) {
            // let current_time = new Date().Format('yyyy-MM-dd')+' 23:59:59';  //时间日期为:当前日期 23:59:59
            let current_time = _this.Format('YYYY-mm-dd',new Date()) + ' 23:59:59'
            let t = new Date(current_time); //当前日期 23:59:59’的时间戳
            return time.getTime() > t;
          }
        }
      }
    },
    created(){
	  },
    methods: {
	  	// 时间转换
      Format(fmt, date) {
        let ret = ''
        date = new Date(date)
        const opt = {
          'Y+': date.getFullYear().toString(), // 年
          'm+': (date.getMonth() + 1).toString(), // 月
          'd+': date.getDate().toString(), // 日
          'H+': date.getHours().toString(), // 时
          'M+': date.getMinutes().toString(), // 分
          'S+': date.getSeconds().toString() // 秒
          // 有其他格式化字符需求可以继续添加,必须转化成字符串
        }
        for (let k in opt) {
          ret = new RegExp('(' + k + ')').exec(fmt)
          if (ret) {
            fmt = fmt.replace(
              ret[1],
              ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')
            )
          }
        }
        return fmt
      },
	  },
  }
</script>

第三种:monthrange只能选择当前月份之前的月份

<template>
  <div>
		<el-form
		  class="abow_dialog"
		  :model="ruleForm"
		  ref="ruleForm"
		  :rules="rules"
		  label-width="180px"
		>
	   <el-form-item label="日期:"  prop="value">
        <el-date-picker
          class="fl"
          v-model="ruleForm.value"
          unlink-panels
          prefix-icon="el-icon-date"
          type="monthrange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          :picker-options="pickerOptions3"
          :default-value="timeDefaultShow"
          format="yyyy-MM"
          value-format="yyyy-MM"
          >
        </el-date-picker>
      </el-form-item>
		</el-form>
	</div>
</template>
<script>
  export default {
    data(){
      return {
        ruleForm: {
          value: '',
        },
        timeDefaultShow:'',
        rules: {
          value:[
            { required: true, message: '请选择日期', trigger: 'change' },
          ],
        },
        // 日期选择控件
        pickerOptions3: {
          disabledDate(time) {
            var date = new Date();
            var year = date.getFullYear();
            var month = date.getMonth();
            var day = date.getDay();
            month = (month > 9) ? month : ("0" + month);
            day = (day < 10) ? ("0" + day) : day;
            var today = year + "-" + month + "-" + day;
            var startDate= today.replace(new RegExp("-","gm"),"/");
            var startDateM = (new Date(startDate)).getTime(); 
            return time.getTime() > startDateM;
          }
        },
      }
    },
    created(){
	  },
    mounted(){
    },
    methods: {
	  },
  }
</script>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以使用 JavaScript 来更改日期格式。以下是一个示例代码: ``` <input type="date" id="myDate"> <script> var dateInput = document.getElementById("myDate"); dateInput.addEventListener("input", function() { var dateValue = dateInput.value; var year = dateValue.substring(, 4); var month = dateValue.substring(5, 7); var newDateValue = year + "年" + month + "月"; dateInput.value = newDateValue; }); </script> ``` 这段代码将监听日期输入框的值变化事件,当用户选择日期时,它将获取年份和月份,并将它们组合成新的日期格式,然后将新格式日期值设置回输入框中。 ### 回答2: 要将input type=date的日期格式从YYYY MM更改为年 月,需要使用JavaScript来操作。 首先,需要获取input元素,并为其添加一个事件监听器,以便在用户选择日期时触发函数。 ```javascript var inputElement = document.querySelector('input[type="date"]'); inputElement.addEventListener('change', formatDateString); ``` 然后,创建一个formatDateString函数来处理用户选择的日期字符串。 ```javascript function formatDateString() { var selectedDate = new Date(this.value); var year = selectedDate.getFullYear(); // 获取年份 var month = selectedDate.getMonth() + 1; // 获取月份,注意要+1,因为月份从0开始计数 // 将年份和月份组合为字符串 var formattedDateString = year + ' 年 ' + month + ' 月'; // 将格式化后的日期字符串设置回input元素 this.value = formattedDateString; } ``` 上述代码中,`getFullYear`方法用于获取年份,`getMonth`方法用于获取月份。需要注意的是,`getMonth`方法返回的月份是以0开始计数的,所以需要将其加1。然后,将年份和月份组合起来,形成所需的日期字符串。最后,将格式化后的日期字符串设置回input元素的value属性。 以上就是将input type=date日期格式从YYYY MM改成年 月的方法。 ### 回答3: 要将input type=date的日期格式从YYYY MM改为年 月,可以通过以下两种方式实现: 1. 使用JavaScript: 可以通过JavaScript对input元素的value进行处理,将YYYY MM格式日期转换为年 月格式。通过以下步骤来完成转换: - 首先,获取到input元素的value值,即YYYY-MM格式日期。 - 然后,使用split函数将日期按照"-"进行拆分,得到年和月的两个值。 - 接下来,根据需要的格式,将得到的年和月进行拼接,添加中文的"年"和"月"。 - 最后,将转换后的年 月格式的字符串重新赋值给input元素的value属性。 示例代码如下: ```javascript var inputElement = document.querySelector("input[type='date']"); var dateValue = inputElement.value; var year = dateValue.split("-")[0]; var month = dateValue.split("-")[1]; var chineseDateString = year + "年 " + month + "月"; inputElement.value = chineseDateString; ``` 2. 使用HTML5的input type=month: HTML5中提供了一种专门用于选择年 月格式的input类型,即input type=month。该类型的输入框会显示一个年月选择器,用户可以通过选择对应的年份和月份来输入日期。使用input type=month可以简化日期格式转换的过程,并且不需要使用JavaScript来进行处理。 示例代码如下: ```html <input type="month"> ``` 无论选择哪种方式,都可以将input type=date的日期格式从YYYY MM改为年 月。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值