1.项目中要求,传给后台的时间格式为'2019-04-10'这样的格式,这个很好实现,el-date-picker上添加value-format="yyyy-MM-dd"即可;
2.日期限定范围要求:起始时间不能大于结束时间
实现代码:
template部分
<el-form-item label="起始日期:" prop="start">
<el-date-picker
v-model="start"
type="date"
placeholder="选择起始日期"
:picker-options="pickerOptionsStart"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
></el-date-picker>
</el-form-item>
<el-form-item label="终止日期:" prop="end">
<el-date-picker
v-model="end"
type="date"
placeholder="选择终止日期"
:picker-options="pickerOptionsEnd"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
></el-date-picker>
</el-form-item>
js部分:
export default {
data() {
return {
//实现起始时间不能大于结束时间
pickerOptionsStart: {
disabledDate: time => {
let endDateVal =this.formDate.end
//修改后代码为:let endDateVal =new Date(this.formDate.end).getTime();
if (endDateVal) {
return time.getTime() > endDateVal;
}
}
},
pickerOptionsEnd: {
disabledDate: time => {
let beginDateVal =this.formDate.start
//修改后代码为:let beginDateVal =new Date(this.formDate.start).getTime();
if (beginDateVal) {
return time.getTime() < beginDateVal;
}
}
},
start:'',
end:''
};
},
};
3.现在问题是,如果我使用了value-format="yyyy-MM-dd",就会导致pickerOptionsStart(以pickerOptionsStart为例)中
[ return time.getTime() > endDateVal]
这段代码中的endDateVal格式为'2019-04-10'这样的格式,但是time.getTime()的格式为13位时间戳,就会导致这个不等式无效;因此我采用的方式是把beginDateVal也变成时间戳;即把
let endDateVal =this.formDate.end
改为:
let endDateVal =new Date(this.formDate.end).getTime();
这样就解决了不等式两侧格式不同的问题,解决了时间范围失效的问题