我试图使用时刻来验证我的表格中输入的日期,但是对于不存在的日期,比如2月30日,它不会说无效日期,而是会把额外的一天添加到月份中,这意味着它将输出 1980-03-01
而不是把日期作为 1980-03-01
并使日期无效
我怎么能让它正确验证日期?
const validateDate = (year, month, day) => {
let validationMessage;
const isNotEmpty = year && month && day;
const date = isNotEmpty && `${year}-${month}-${day}`;
const dateFormat = 'YYYY-MM-DD';
const toDateFormat = moment(new Date(date)).format(dateFormat);
const isDateValid = moment(toDateFormat, dateFormat, true).isValid();
const isYearValid = (year > 1900 && year < new Date().getFullYear());
if (!isDateValid) {
validationMessage = `invalid date`;
}
return {
isValid: isDateValid && isYearValid,
validationMessage,
};
};
export default {
validate: validateDate
};
const date = moment('2020-02-30', 'YYYY-MM-DD', true);
const isValid = date.isValid(); //false
const date = moment('2020-02-28', 'YYYY-MM-DD', true);
const isValid = date.isValid(); //true