Javascript 使用矩的日期验证不正确
我试图使用moment来验证表单上输入的日期,但是对于不存在的日期,例如2月30日,它将在月份上添加额外的日期,这意味着它将输出Javascript 使用矩的日期验证不正确,javascript,momentjs,Javascript,Momentjs,我试图使用moment来验证表单上输入的日期,但是对于不存在的日期,例如2月30日,它将在月份上添加额外的日期,这意味着它将输出1980-03-01,而不是将日期设为1980-03-01,并使日期无效 如何让它正确验证日期 const validateDate = (year, month, day) => { let validationMessage; const isNotEmpty = year && month && day;
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 validateDate=(年、月、日)=>{
让验证消息;
const isNotEmpty=年、月、日;
const date=isNotEmpty&`${year}-${month}-${day}`;
const dateFormat='YYYY-MM-DD';
const toDateFormat=时刻(新日期)).format(日期格式);
const isDateValid=矩(toDateFormat,dateFormat,true).isValid();
const isYearValid=(年份>1900&&year<新日期().getFullYear());
如果(!isDateValid){
validationMessage=`无效日期';
}
返回{
isValid:isDateValid&&isYearValid,
验证消息,
};
};
导出默认值{
验证: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