博主接到一个需求,要求限制日期范围,其要求如下:
限制起始时间 和结束时间 的范围不超过1个月 ,且限制起始时间 和结束时间 都不能大于 当前日期减去2天 (即T-2 ) 查阅了官方文档和一些博主的文档,最后经过自己的微调整,解决了该问题。
PS:注意,限制用户刚点击打开RangePicker弹窗的可选日期时,需要在最上方进行判断返回。否则无法生效!!!
<Col span={8}>
<Form.Item {...itemLayout} name="dotime" label={
<div style={{ textAlign: 'right' }}>
<span> 执行日期</span>
<span className={styles.a_symbol}>
<Tooltip placement="top" title={<div>1、执行日期起止时间范围不能超过1个月<br />2、数据更新日期为T-2日,之后日期无数据</div>}>
<QuestionCircleOutlined style={{ margin: '0 -8px 0 2px' }} />
</Tooltip>
</span>
</div>
} rules={[{ required: true, message: '执行日期不能为空!' },]} >
<RangePicker value={hackValue || value} disabledDate={disabledDate} onCalendarChange={onCalendarChange} onOpenChange={onOpenChange} onChange={onDateChange} />
</Form.Item>
</Col>
// 日期禁选区域设置
const disabledDate = (current) => {
const limitDate = moment().endOf().subtract(2, 'days');
const T2 = current && current > limitDate;
if (!rangeDate || rangeDate.length === 0) {
return T2;
}
const tooLate = rangeDate[0] && current.diff(rangeDate[0], 'months') >= 1;
const tooEarly = rangeDate[1] && rangeDate[1].diff(current, 'months') >= 1;
return tooEarly || tooLate || T2;
}
|