IsSame和IsAfter条件在moment.js中不起作用

时间:2017-10-13 06:53:17

标签: javascript momentjs

我正在使用moment.js验证日期

var dobfield = $("#dobfield").val().trim();
//...
formatToApply = "DD/MM/YYYY";
//...
else if(moment(dobfield, formatToApply).isAfter(moment().format(formatToApply))) 
{
    swal({
        title: "",
        text: "Date of birth has to be in the past! "
    });
    $("#dobfield").focus();
}
else if(moment(dobfield, formatToApply).isSame(moment().format(formatToApply))) 
{
    swal({
        title: "",
        text: "Date of birth cannot be in the present! "
    });
    $("#dobfield").focus();
}

isSameisAfter都未能验证以dd/mm/yyyy格式提供的日期。

2 个答案:

答案 0 :(得分:0)

我假设您只想比较日期,而不是时间。因此,您必须向isSame()isAfter()函数指明...

var dobfield = $("#dobfield").val().trim();
...
formatToApply = "DD/MM/YYYY";
...
else if (moment(dobfield,formatToApply).isAfter(moment(),'day')) {

    swal({
        title: "",
        text: "Date of birth has to be in the past! "
    });
    $("#dobfield").focus();
}
else if (moment(dobfield,formatToApply).isSame(moment(),'day')) {

    swal({
        title: "",
        text: "Date of birth cannot be in the present! "
    });
    $("#dobfield").focus();
}

这里有一个小提琴示例...... https://fiddle.jshell.net/rigobauer/mz9rutuq/

注意:dobfield日期格式始终必须与formatToApply变量中指定的格式匹配。否则,moment(dobfield,formatToApply)将获得意外结果。

答案 1 :(得分:-1)

可悲的是,moment.js isAfter和isSame并没有为这个日期格式做好准备。它仅适用于YYYY-MM-DD。

这是我可以说的一个错误。我可以说。