显示到分钟不显示秒
<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