import moment from 'moment';
const [selectPriceDate, setSelectPriceDate] = useState('');
<DatePicker.RangePicker
style={{ width: '100%' }}
allowClear
placeholder={['开始时间', '结束时间']}
disabledDate={disabledPriceRangeDate} // 不可选择的日期
onCalendarChange={calendarPriceRangeChange} // 待选日期发生变化的回调
onChange={changePriceRangeDate} // 日期范围发生变化的回调
onOpenChange={handleStartOpenChange} // 日期弹框 打开、关闭的回调
/>
// 根据选择的开始时间/结束时间,动态渲染要禁用的日期
function disabledPriceRangeDate(current) {
const time = selectPriceDate || moment();
const result = moment().add(29, 'days').diff(moment(time), 'days'); // 计算选中日期和今天之后29天的日期差
const days = moment(time) > moment() ? result : 29; // 判断选中日期是今天之前还是今天之后
const startTime = time;
const start = startTime && startTime.format('YYYYMMDD') > current.format('YYYYMMDD');
const end =
startTime &&
moment(startTime).add(days, 'days').format('YYYYMMDD') < current.format('YYYYMMDD');
return selectPriceDate ? start || end : end;
}
// 待选日期发生变化的回调
function calendarPriceRangeChange(date) {
setSelectPriceDate(date[0]);
}
// 选择完时间
function changePriceRangeDate(value) {
setSelectPriceDate('');
}
function handleStartOpenChange(open) {
if (!open) {
setSelectPriceDate('');
}
}
赋值即可用..