记录一次antd 3.x DatePicker disabledTime使用
使用场景:开始时间不能大于结束时间,结束时间不能小于开始时间
使用antd组件DatePicker的disabledTime配置
disabledTime = (mode) => {
const result = {
disabledHours: mode === 'start' ? this.disabledStartHours : this.disabledEndHours,
disabledMinutes: mode === 'start' ? this.disabledStartMinutes : this.disabledEndMinutes,
disabledSeconds: mode === 'start' ? this.disabledStartSeconds : this.disabledEndSeconds
}
return result;
}
disabledStartHours = () => {
let result = [];
const { endTime } = this.state;
if (endTime) {
const endTimeHour = endTime.hour();
for (let i = endTimeHour + 1; i < 24; i++) {
result.push(i);
}
}
return result;
}
disabledEndHours = () => {
let result = [];
const { startTime } = this.state;
if (startTime) {
const startTimeHour = startTime.hour();
for (let i = 0; i < startTimeHour; i++) {
result.push(i);
}
}
return result;
}
disabledStartMinutes = () => {
let result = [];
const { startTime, endTime } = this.state;
if (startTime && endTime) {
const startTimeHour = startTime.hour();
const endTimeHour = endTime.hour();
if (startTimeHour === endTimeHour) {
const endTimeMin = endTime.minute();
for (let i = endTimeMin + 1; i < 60; i++) {
result.push(i);
}
}
}
return result;
}
disabledEndMinutes = () => {
let result = [];
const { startTime, endTime } = this.state;
if (startTime && endTime) {
const startTimeHour = startTime.hour();
const endTimeHour = endTime.hour();
if (startTimeHour === endTimeHour) {
const startTimeMin = startTime.minute();
for (let i = 0; i < startTimeMin; i++) {
result.push(i);
}
}
}
return result;
}
disabledStartSeconds = () => {
let result = [];
const { startTime, endTime } = this.state;
if (startTime && endTime) {
const startTimeHour = startTime.hour();
const endTimeHour = endTime.hour();
const startTimeMin = startTime.minute();
const endTimeMin = endTime.minute();
if (startTimeHour === endTimeHour && startTimeMin === endTimeMin) {
const endTimeSec = endTime.second();
for (let i = endTimeSec + 1; i < 60; i++) {
result.push(i);
}
}
}
return result;
}
disabledEndSeconds = () => {
let result = [];
const { startTime, endTime } = this.state;
if (startTime && endTime) {
const startTimeHour = startTime.hour();
const endTimeHour = endTime.hour();
const startTimeMin = startTime.minute();
const endTimeMin = endTime.minute();
if (startTimeHour === endTimeHour && startTimeMin === endTimeMin) {
const startTimeSec = startTime.second();
for (let i = 0; i < startTimeSec; i++) {
result.push(i);
}
}
}
return result;
}
效果如图:
开始时间
结束时间