我正在使用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();
}
isSame
和isAfter
都未能验证以dd/mm/yyyy
格式提供的日期。
答案 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。
这是我可以说的一个错误。我可以说。