一个日期选择器的范围限制
<el-date-picker
v-model="value1"
type="date"
placeholder="选择日期"
:picker-options="pickerOptions0"
</el-date-picker>
//选择今天以及今天之后的日期
data (){
return {
pickerOptions0: {
disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7;//如果没有后面的-8.64e7就是不可以选择今天的
}
},
}
}
//选择今天以及今天以前的日期
data (){
return {
pickerOptions0: {
disabledDate(time) {
return time.getTime() > Date.now() - 8.64e6;//如果没有后面的-8.64e6就是不可以选择今天的
}
},
}
}
两个日期选择器的范围限制
<el-date-picker
v-model="value1"
type="date"
placeholder="开始日期"
:picker-options="pickerOptions0">
</el-date-picker>
<el-date-picker
v-model="value2"
type="date"
placeholder="结束日期"
:picker-options="pickerOptions1">
</el-date-picker>
// 结束日期不能大于开始日期,可以为今天
// 注: 结束时间最大只能为今天,开始时间只能小于或等于结束时间,
// 如果开始时间为今天,结束时间只能为今天
pickerOptions0: {
disabledDate: (time) => {
if (this.value2) {
return time.getTime() > Date.now() || time.getTime() > this.value2;
} else {
return time.getTime() > Date.now();
}
}
},
pickerOptions1: {
disabledDate: (time) => {
return time.getTime() < this.value1 || time.getTime() > Date.now();
}
}
// 在我们项目中用的最多的是这种
// 结束日期不能大于开始日期,可以为今天
// 先开始时间,判断为今天或以前,在结束时间,则结束时间大于等于开始时间
// 先结束时间,判断为今天或以后,在开始时间,则开始时间小于等于结束时间
pickerOptions0: {
disabledDate: (time) => {
if (this.value2) {
return time.getTime() > this.value2
} else {
return time.getTime() > Date.now()
}
}
},
pickerOptions1: {
disabledDate: (time) => {
if (this.value2) {
return time.getTime() < this.value1
}
return time.getTime() < Date.now()
}
},
限制结束日期不能大于开始日期
<el-date-picker
v-model="value1"
type="date"
placeholder="开始日期"
:picker-options="pickerOptions0">
</el-date-picker>
<el-date-picker
v-model="value2"
type="date"
placeholder="结束日期"
:picker-options="pickerOptions1">
</el-date-picker>
data(){
return {
pickerOptions0: {
disabledDate: (time) => {
if (this.value2 != "") {
return time.getTime() > new Date(this.value2).getTime();
}
},
pickerOptions1: {
disabledDate: (time) => {
return time.getTime() < new Date(this.value1).getTime()- 1*24*60*60*1000;//减去一天的时间代表可以选择同一天;
}
},
}
}
限制选择开始时间不能小于当前时间。并且结束时间不能大于开始时间(比上面多了层限时)
pickerOptions0: {//结束时间不能大于开始时间
disabledDate: (time) => {
if (this.addForm.date_range_end) {
return time.getTime() > new Date(this.addForm.date_range_end).getTime();
}else{//还没有选择结束时间的时候,让他只能选择今天之后的时间包括今天
return time.getTime() < Date.now() - 8.64e7
}
}
},
pickerOptions1: {
disabledDate: (time) => {
if(this.addForm.date_range_start){
return time.getTime() < new Date(this.addForm.date_range_start).getTime() - 1*24*60*60*1000;//可以选择同一天
}
}
},
日期选择器, 只能选择今天 和 未来七天的时间
siginsurepickerOptions: {
//只能选择今天 和未来七天的时间
disabledDate(time) {
let curDate = (new Date()).getTime();
let three = 7 * 24 * 3600 * 1000;
let threeMonths = curDate + three ;
return time.getTime() < Date.now() || time.getTime() > threeMonths;
},
},
月份选择器,大于当前月份的日期不可选
pickerOptions: { //大于当前月分的日期不可选
disabledDate: (time) => {
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
if (month >= 1 && month <= 9) {
month = "0" + month;
}
var currentdate = year.toString() + month.toString();
var timeyear = time.getFullYear();
var timemonth = time.getMonth() + 1;
if (timemonth >= 1 && timemonth <= 9) {
timemonth = "0" + timemonth;
}
var timedate = timeyear.toString() + timemonth.toString();
return currentdate < timedate;
}
},
value-format属性是改变v-model上值的格式
value-format=“yyyy-MM-dd” //2018-12-27
value-format=“yyyy-MM-dd HH:mm:ss” //2018-12-27 00:00:00
value-format=“timestamp” // 1483326245000
在这推荐一个插件 moment,一个操作时间的插件,有兴趣可以去了解一下