Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用矩的日期验证不正确_Javascript_Momentjs - Fatal编程技术网

Javascript 使用矩的日期验证不正确

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;

我试图使用moment来验证表单上输入的日期,但是对于不存在的日期,例如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 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