需求介绍
- 截止时间初始值晚于当前时间2小时,最晚时间晚于截止时间2小时。
- 作业提交的截止时间晚于当前时间(当前截止时间前不可选中
- 作业提交的最晚时间晚于截止时间,且当截止时间改变后,最晚时间也随之改变
效果图



代码
代码片.
const [submitTime, setSubmitTime] = useState(moment().utc().zone(-8).add(2, 'hours').format(dateFormat).toString() as any); // 作业提交时间
const [deadline, setDeadline] = useState(moment().utc().zone(-8).add(4, 'hours').format(dateFormat).toString() as any); // 作业最晚时间
const disabledSubmitDate = (current:any) => {
return current && current < moment().startOf('day'
}
const disabledEndDate = (current:any) => {
return current && current < moment(submitTime).startOf('day');
}
// 提交时间改变
const onSubmitTimeChange = (value: any, dateString: any) => {
setSubmitTime(dateString);
setDeadline(moment(dateString).utc().zone(-8).add(2, 'hours').format(dateFormat).toString() as any);
}
// 延迟时间改变
const onDeadlineChange = (value: any, dateString: any) => {
setDeadline(dateString);
}
// 获取当前时间
const currentTime = moment().valueOf();
const range = (start, end) => {
const result:any = [];
for (let i = start; i < end; i++) {
result.push(i);
}
return result;
};
// 截止时间与当前时间牵制
const disabledSubmitTime:any = (dateTime) => {
// 判断所选日期与当前日期是否相等
if (moment(dateTime).isSame(moment(currentTime), "day")) {
return {
disabledHours: () => range(0, moment(currentTime).hour()),
disabledMinutes: () =>
moment(dateTime).isSame(moment(currentTime), "hour")
? range(0, moment(currentTime).minute())
: []
};
}else return [];
};
// 最晚时间与截止时间牵制
const disabledEndTime:any = (dateTime) => {
if (moment(dateTime).isSame(moment(submitTime), "day")) {
return {
disabledHours: () => range(0, moment(submitTime).hour()),
disabledMinutes: () =>
moment(dateTime).isSame(moment(submitTime), "hour")
? range(0, moment(submitTime).minute())
: []
};
}else return [];
}
// 两个 DatePicker
<DatePicker
allowClear={false}
disabledDate = {disabledSubmitDate}
showTime
onChange={onSubmitTimeChange}
disabledTime={disabledSubmitTime}
/>
<DatePicke
allowClear={false}
disabledDate = {disabledEndDate}
format={dateFormat}
showTime
onChange={onDeadlineChange}
disabledTime={disabledEndTime}
/>
755



被折叠的 条评论
为什么被折叠?



