使用时刻进行错误的日期验证

问题描述 投票:0回答:1

我试图使用时刻来验证我的表格中输入的日期,但是对于不存在的日期,比如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
};
javascript momentjs
1个回答
2
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.