将传递给新Date()的日期与新Date()返回的日期进行比较;

时间:2018-06-06 14:35:15

标签: javascript

我正在尝试检查日期是否有效。如果我通过31/02/2018到新的日期,它将返回1987年3月3日星期二00:00:00 GMT + 0000(格林威治标准时间),因为31/02/2018不是真正的日期。那么如何将通过日期与新日期的返回日期进行比较?或者我完全以错误的方式解决这个问题。

function isDateValid() {
    var dob = "31/02/1994",
        isValidDate = false;

    var reqs = dob.split("/"),
        day = reqs[0],
        month = reqs[1],
        year = reqs[2];

    var birthday = new Date(year + "-" + month + "-" + day);

    if (birthday === "????") {
        isValidDate = true;
    }

    return isValidDate;
}

2 个答案:

答案 0 :(得分:2)

你可以通过这样做来获得每个月的最后一天;

var lastDay = new Date(month, year, 0).getDate();

在你的情况下;

function isDateValid(date){
    var isValidDate = false;

    var reqs = date.split("/"),
        day = reqs[0],
        month = reqs[1],
        year = reqs[2],
        lastDay = new Date(month, year, 0).getDate();

    if(day > 0 && day <= lastDay)
        isValidDate = true;

    return isValidDate;
}

答案 1 :(得分:0)

这就是你要找的东西。我保持代码不变,坚持原始请求。

function isDateValid() {
    var dob = "31/02/2018",
        isValidDate = false;

    var reqs = dob.split("/"),
        day = reqs[0],
        month = reqs[1],
        year = reqs[2];

    var birthday = new Date(year + "-" + month + "-" + day);
    
    if (+year  === birthday.getFullYear()&&
        +day   === birthday.getDate()    &&
        +month === birthday.getMonth() + 1) {
        isValidDate = true;
    }

    return isValidDate;
}

console.log(isDateValid());