编程语言
首页 > 编程语言> > javascript – 如何检查字符串是否是合法的“dd / mm / yyyy”日期?

javascript – 如何检查字符串是否是合法的“dd / mm / yyyy”日期?

作者:互联网

给定一个字符串str,我如何检查它是否采用dd / mm / yyyy格式并包含合法日期?

一些例子:

bla bla      // false
14/09/2011   //         true
09/14/2011   // false
14/9/2011    // false
1/09/2011    // false
14/09/11     // false
14.09.2011   // false
14/00/2011   // false
29/02/2011   // false
14/09/9999   //         true

解决方法:

编辑:以下精确解决方案

您可以执行类似的操作,但使用更准确的日期验证算法:

function testDate(str) {
  var t = str.match(/^(\d{2})\/(\d{2})\/(\d{4})$/);
  if(t === null)
    return false;
  var d = +t[1], m = +t[2], y = +t[3];

  // Below should be a more acurate algorithm
  if(m >= 1 && m <= 12 && d >= 1 && d <= 31) {
    return true;  
  }

  return false;
}

http://jsfiddle.net/aMWtj/

日期验证alg.:http://www.eee.hiflyers.co.uk/ProgPrac/DateValidation-algorithm.pdf

精确解决方案:返回解析日期或null的函数,完全取决于您的要求.

function parseDate(str) {
  var t = str.match(/^(\d{2})\/(\d{2})\/(\d{4})$/);
  if(t !== null){
    var d = +t[1], m = +t[2], y = +t[3];
    var date = new Date(y, m - 1, d);
    if(date.getFullYear() === y && date.getMonth() === m - 1) {
      return date;   
    }
  }

  return null;
}

http://jsfiddle.net/aMWtj/2/

如果您需要函数返回true / false和yyyy / mm / dd格式

function IsValidDate(pText) {
    var isValid = false ;
    var t = pText.match(/^(\d{4})\/(\d{2})\/(\d{2})$/);

    if (t !== null) {
        var y = +t[1], m = +t[2], d = +t[3];
        var date = new Date(y, m - 1, d);

        isValid = (date.getFullYear() === y && date.getMonth() === m - 1) ;
    }

    return isValid ;
}

标签:javascript,jquery,string,date,date-format
来源: https://codeday.me/bug/20190923/1815780.html