为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript:如何以MM-DD-YYYY格式验证日期?

Javascript:如何以MM-DD-YYYY格式验证日期?

慕姐8265434 2019-08-13 15:00:58
Javascript:如何以MM-DD-YYYY格式验证日期?我在这里看到了一个潜在的答案,但那是YYYY-MM-DD:JavaScript日期验证我为MM-DD-YYYY修改了上面的代码,但我还是无法让它工作:String.prototype.isValidDate = function() {      var IsoDateRe = new RegExp("^([0-9]{2})-([0-9]{2})-([0-9]{4})$");      var matches = IsoDateRe.exec(this);      if (!matches) return false;      var composedDate = new Date(matches[3], (matches[1] - 1), matches[2]);      return ((composedDate.getMonth() == (matches[1] - 1)) &&       (composedDate.getDate() == matches[2]) &&       (composedDate.getFullYear() == matches[3]));}如何让上述代码适用于MM-DD-YYYY,更好的是MM / DD / YYYY?谢谢。
查看完整描述

3 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

function isValidDate(date)

{

    var matches = /^(\d{1,2})[-\/](\d{1,2})[-\/](\d{4})$/.exec(date);

    if (matches == null) return false;

    var d = matches[2];

    var m = matches[1] - 1;

    var y = matches[3];

    var composedDate = new Date(y, m, d);

    return composedDate.getDate() == d &&

            composedDate.getMonth() == m &&

            composedDate.getFullYear() == y;

}

console.log(isValidDate('10-12-1961'));

console.log(isValidDate('12/11/1961'));

console.log(isValidDate('02-11-1961'));

console.log(isValidDate('12/01/1961'));

console.log(isValidDate('13-11-1961'));

console.log(isValidDate('11-31-1961'));

console.log(isValidDate('11-31-1061'));

有用。(使用Firebug测试,因此使用console.log()。)


查看完整回答
反对 回复 2019-08-13
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

function isValidDate(date) {
        var valid = true;

        date = date.replace('/-/g', '');

        var month = parseInt(date.substring(0, 2),10);
        var day   = parseInt(date.substring(2, 4),10);
        var year  = parseInt(date.substring(4, 8),10);

        if(isNaN(month) || isNaN(day) || isNaN(year)) return false;

        if((month < 1) || (month > 12)) valid = false;
        else if((day < 1) || (day > 31)) valid = false;
        else if(((month == 4) || (month == 6) || (month == 9) || (month == 11)) && (day > 30)) valid = false;
        else if((month == 2) && (((year % 400) == 0) || ((year % 4) == 0)) && ((year % 100) != 0) && (day > 29)) valid = false;
        else if((month == 2) && ((year % 100) == 0) && (day > 29)) valid = false;
        else if((month == 2) && (day > 28)) valid = false;

    return valid;}

这将检查每个月的有效天数和有效的闰年天数。


查看完整回答
反对 回复 2019-08-13
  • 3 回答
  • 0 关注
  • 597 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信