1、只能选择当天以后的时间(不包含当天)
disabledDate = (current) => {
return current && current < moment().endOf('day'); //如果需要包含当天就去掉current &&
//或者
//return current < moment().subtract(1, "day");
<DatePicker
format="YYYY-MM-DD"
disabledDate={this.disabledDate}
2、只能选择今天和之前的日期(包含今天)
disabledDate = (current) => {
return current && current >= moment().endOf('day');
3、只能选择前10天的数据包括今天就是11天的数据
disabledDate = (current) => {
return !( current < moment().subtract(-111, "days").endOf("day") && current >= moment().endOf('day') );
4、重新打开弹窗defaultValue不起作用的问题修复
要在modal里面加上destroyOnClose
<Modal
title="Basic Modal"
visible={this.state.visible}
onOk={this.handleOk}
onCancel={this.handleCancel}
destroyOnClose
<DatePicker
defaultValue={defaultValue}
format="YYYY-MM-DD"
disabledDate={this.disabledDate}
</Modal>
5、月份补0
let mouth = String(yueNum).padStart(2,0);
6、其他获取时间的函数
// 获取某年某月的第一天
getFirstDate = date => {
return moment(date)
.startOf('month')
.format('YYYY-MM-DD');
// 获取某年某月的最后一天
getLastDate = date => {
return moment(date)
.endOf('month')
.format('YYYY-MM-DD');
// 不足两位数前面补充0
zeroize = obj => {
if (obj < 10) {
return `0${obj}`;
return obj;
// 获取某年某月的第一天和最后一天日期
getDay = (year, month) => {
if (year !== '' && month !== '') {
const firstDay = new Date(year, month - 1, 1); // 这个月的第一天
const currentMonth = firstDay.getMonth(); // 取得月份数
const lastDay = new Date(firstDay.getFullYear(), currentMonth + 1, 0); // 是0而不是-1
return [firstDay, lastDay];
// 指定日期的前几天,后几天的时间
getNextDate = (date, day) => {
const dd = new Date(date);
dd.setDate(dd.getDate() + day);
const y = dd.getFullYear();
const m = dd.getMonth() + 1 < 10 ? `0${dd.getMonth() + 1}` : dd.getMonth() + 1;
const d = dd.getDate() < 10 ? `0${dd.getDate()}` : dd.getDate();
return `${y}-${m}-${d}`;
getNextDate('2021-08-30', 6) // 2021-08-30号之后的第6天日期
getNextDate('2021-08-30', -6) // 2021-08-30号之前的第6天日期
复制代码