ElementUI el-time-picker DatePicker 日期选择器 显示到分钟不显示秒 24小时制 选择三天内日期 结束日期大于开始日期 时间字符串比较大小

 显示到分钟不显示秒

<el-date-picker type="datetime" :placeholder="new Date('ch',{hour12:false}).toLocaleString()" value-format="yyyy-MM-dd HH:mm" 
format="yyyy-MM-dd HH:mm" v-model="searchData.timeStart" @change="changeData" style="width: 100%"></el-date-picker>

HH 是 24 小时制, hh 是 12 小时制,HH:mm只显示小时和分钟。

format 是显示时的时间格式 ,即下面的图片效果

value-format 是传给后端的时间格式

js如何将new Date()转化为本地时间 yyyy-MM-dd HH:mm:ss格式?

    dateFormat (time) {
      let date = new Date(time + 8 * 3600000)
      let str = date.toISOString().replace('T', ' ')
      return str.substr(0, str.lastIndexOf('.'))
    }
    this.dateFormat(Date.now())

调用上面的函数 转化为本地时间 yyyy-MM-dd 格式? 

    /**
     * @function 获取当天日期 yyyy-MM-dd格式
     */
    dateInitFormat() {
      const date = this.dateFormat(Date.now())
      const str = date.substring(0, 10)
      return str
    },

选择三天内日期(今天,明天,后天)

 data的return 中:      
    pickerOptions: {
        disabledDate (time) {
          let _now = Date.now() + 8.64e7 * 3
          let three = 3 * 8.64e7
          let threeDays = _now - three
          // 今天,明天后天之后的禁用,今天之前禁用
          return time.getTime() > _now - 8.64e7 || time.getTime() < threeDays - 8.64e7
        }
      }

 

对出生日期进行限制(只能选择当天以前的日期)

获取今天日期

let nowDay = new Date().toLocaleDateString().split('/').join('-')
// 将1970/08/08转化成1970-08-08
template中:
<el-date-picker v-model="addForm.birthDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择日期" :picker-options="pickerBeginDateBefore" style="width: 100%"></el-date-picker>

data中:
data(){
    return {
      // 出生日期限制
      pickerBeginDateBefore: {
        disabledDate (time) {
          return time.getTime() > Date.now() - 8.64e7 
           //(带 - 8.64e7时,今天之前的日期,不包括今天)
          // return time.getTime() > Date.now() - 8.64e7 (今天之后的日期,包括今天)
        }
      }
    }
}

开始时间大于当天并且小于结束时间

html部分
template中:    
              <el-col  :xs="24" :sm="24" :md="8" :lg="6">
                <el-form-item label="抵达时间">
                  <el-date-picker format="MM-dd" :picker-options="pickerArriveDate" value-format="yyyy-MM-dd" type="date" v-model="searchData.arriveDate" @change="changeData" style="width: 100%"></el-date-picker>
                </el-form-item>
              </el-col>
              <el-col  :xs="24" :sm="24" :md="8" :lg="6">
                <el-form-item label="离开时间">
                  <el-date-picker format="MM-dd" :picker-options="pickerLeaveDate" value-format="yyyy-MM-dd" type="date" v-model="searchData.leaveDate" @change="changeData" style="width: 100%"></el-date-picker>
                </el-form-item>
              </el-col>
data中
      pickerArriveDate: this.arriveDate(),
      pickerLeaveDate: this.leaveDate(),
      searchData.leaveDate: '',
      searchData.arriveDate: ''
methods中
    arriveDate () {
      let self = this
      return {
        disabledDate (time) {
          if (self.searchData.leaveDate) {
            // time.getTime() 是当前时间,当前时间大于离开时间的禁用掉 / 当前时间小于今天的禁用
            return new Date(self.searchData.leaveDate).getTime() < time.getTime() || time.getTime() < Date.now() - 8.64e7
          } else {
            return time.getTime() < Date.now() - 8.64e7
          }
        }
      }
    },
    leaveDate () {
      let self = this
      return {
        disabledDate (time) {
          if (self.searchData.arriveDate) {
            // time.getTime() 是当前时间,当前时间小于抵达时间的禁用掉 / 当前时间小于今天的禁用
            return new Date(self.searchData.arriveDate).getTime()  + 8.64e7  > time.getTime() || time.getTime() < Date.now() - 8.64e7
          } else {
            return time.getTime() < Date.now() - 8.64e7
          }
        }
      }
    },

 单个开始时间大于结束时间

html部分
  <el-form-item label="日期">
     <el-row>
       <el-col :span="11">
          <el-date-picker :picker-options="pickerArriveDate" :placeholder="new Date().toLocaleDateString()" value-format="yyyy-MM-dd" type="date" v-model="searchData.startDate" @change="changeData" style="width: 100%"></el-date-picker>
        </el-col>
       <el-col :span="2" style="text-align: center">~</el-col>
          <el-col :span="11">
             <el-date-picker :picker-options="pickerLeaveDate" :placeholder="new Date().toLocaleDateString()" type="date" value-format="yyyy-MM-dd" v-model="searchData.endDate" @change="changeData" style="width: 100%"></el-date-picker>
           </el-col>
      </el-row>
  </el-form-item>
data中
      pickerArriveDate: this.arriveDate(),
      pickerLeaveDate: this.leaveDate(),
      searchData.leaveDate: '',
      searchData.arriveDate: ''
methods中
    arriveDate () {
      let self = this
      return {
        disabledDate (time) {
          if (self.searchData.endDate) {
            // time.getTime() 是当前时间,禁用那些大于结束时间的
            return new Date(self.searchData.endDate).getTime() < time.getTime()
          }
        }
      }
    },
    leaveDate () {
      let self = this
      return {
        disabledDate (time) {
          if (self.searchData.startDate) {
            // time.getTime() 是当前时间,禁用那些小于开始时间的
            return new Date(self.searchData.startDate).getTime() - 8.64e7 > time.getTime()
          }
        }
      }
    }

 效果图

es6单个开始时间小于结束时间 

html部分
                <el-table-column
                  prop="arrivalDate"
                  align="center"
                  width="160px"
                  :label="`* ${$t('into-village-time')}`">
                  <template slot-scope="scope">
                    <el-form-item label-width="0" v-if="showChoseTime" :prop="`addRoomersInfos[${scope.$index}].arrivalDate`" :rules="rules.arrivalDate">
                      <el-date-picker :clearable="false" :picker-options="pickerOptionsStartList[scope.$index]" v-model="scope.row.arrivalDate" type="date" value-format="yyyy-MM-dd" format="yyyy-MM-dd" style="width: 100%"  @change="changeTimeEnd(scope.$index)"></el-date-picker>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column
                  prop="outof-village-time"
                  align="center"
                  width="160px"
                  :label="`* ${$t('outof-village-time')}`">
                  <template slot-scope="scope">
                    <el-form-item v-if="showChoseTime" label-width="0" :prop="`addRoomersInfos[${scope.$index}].departureDate`" :rules="rules.departureDate">
                      <el-date-picker :clearable="false" :picker-options="pickerOptionsEndList[scope.$index]"  v-model="scope.row.departureDate" type="date" value-format="yyyy-MM-dd" format="yyyy-MM-dd" style="width: 100%"  @change="changeTimeStart(scope.$index)"></el-date-picker>
                    </el-form-item>
                  </template>
                </el-table-column>
data部分
      pickerOptionsStart: {},
      pickerOptionsEnd: {},
      showChoseTime: true,    
methods部分
   // 结束时间限制开始时间
    // 开始时间 控制结束时间
    changeTimeStart(index) {
      this.pickerOptionsStartList[index] = {
        disabledDate: time => new Date(this.form.addRoomersInfos[index].departureDate).getTime() < time.getTime(),
      }
      this.showChoseTime = false
      this.$nextTick(() => {
        this.showChoseTime = true
      })
    },
    // 结束时间限制开始时间
    changeTimeEnd(index) {
      this.pickerOptionsEndList[index] = {
        disabledDate: time => new Date(this.form.addRoomersInfos[index].arrivalDate).getTime() - 8.64e7 > time.getTime(),
      }
      this.showChoseTime = false
      this.$nextTick(() => {
        this.showChoseTime = true
      })
    },

 

es6多个开始时间小于结束时间 

html部分
                <el-table-column
                  prop="arrivalDate"
                  align="center"
                  :label="$t('into-village-time')">
                  <template slot-scope="scope">
                    <el-form-item label-width="0" :prop="`addRoomersInfos[${scope.$index}].arrivalDate`" :rules="rules.arrivalDate">
                        <el-date-picker @change="changeEnd(scope.$index)" :picker-options="pickerOptionsStart" v-model="scope.row.arrivalDate" type="date" value-format="yyyy-MM-dd" format="yyyy-MM-dd" style="width: 100%"></el-date-picker>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column
                  prop="outof-village-time"
                  align="center"
                  :label="$t('outof-village-time')">
                  <template slot-scope="scope">
                    <el-form-item label-width="0" :prop="`addRoomersInfos[${scope.$index}].departureDate`" :rules="rules.departureDate">
                        <el-date-picker @change="changeStart(scope.$index)" :picker-options="pickerOptionsEnd" v-model="scope.row.departureDate" type="date" value-format="yyyy-MM-dd" format="yyyy-MM-dd" style="width: 100%"></el-date-picker>
                    </el-form-item>
                  </template>
                </el-table-column>
data:      
      pickerOptionsStart: {},
      pickerOptionsEnd: {},
methods:
    // 结束时间限制开始时间
    changeStart(index) {
      if (!this.form.addRoomersInfos[index].departureDate) {
        this.pickerOptionsStart = {
          disabledDate: {},
        }
        return
      }
      this.pickerOptionsStart = {
        disabledDate: time => new Date(this.form.addRoomersInfos[index].departureDate).getTime() < time.getTime(),
      }
    },
   // 开始时间 控制结束时间
    changeEnd(index) {
      if (!this.form.addRoomersInfos[index].arrivalDate) {
        this.pickerOptionsEnd = {
          disabledDate: {},
        }
        return
      }
      this.pickerOptionsEnd = {
        disabledDate: time => new Date(this.form.addRoomersInfos[index].arrivalDate).getTime() - 8.64e7 > time.getTime(),
      }
    },

效果图

时间字符串比较大小

html部分
          <el-col :span="24">
            <el-form-item :label="$t('startTime')" prop="startTime">
              <el-select v-model="form.startTime" @change="changeTime">
                <el-option v-for="item in DROPDOWNBOX.BUSINESS_TIME" :key="item.value" :value="item.value" :label="item.text" style="width: 100%"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item :label="$t('endTime')" prop="endTime">
              <el-select v-model="form.endTime" @change="changeTime">
                <el-option v-for="item in DROPDOWNBOX.BUSINESS_TIME" :key="item.value" :value="item.value" :label="item.text" style="width: 100%"></el-option>
              </el-select>
            </el-form-item>
          </el-col>    
js部分
    /**
     * @function 时间大小比较
     */
    changeTime() {
      const date1 = Date.parse(`2008-08-08 ${this.form.startTime}`) //'2008-08-08'这个日期随便给
      const date2 = Date.parse(`2008-08-08 ${this.form.endTime}`)
      if (this.form.startTime !== '' && this.form.endTime !== '') {
        if (date1 > date2) {
          this.$message.warning('开始时间必须小于结束时间')
          this.form.endTime = ''
        }
      }
    },

多个开始时间大于结束时间 参考:https://msd.misuland.com/pd/3181438578597039444

选择一定范围的日期参考:https://www.cnblogs.com/goloving/p/9122788.html 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值