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;
}
日期验证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;
}
如果您需要函数返回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