如何检查字符串是否合法的“dd / mm / yyyy”日期? [英] How to check if a string is a legal "dd/mm/yyyy" date?
本文介绍了如何检查字符串是否合法的“dd / mm / yyyy”日期?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
给定一个字符串 str
,我如何检查是否在 dd / mm / yyyy
格式和包含合法日期?
Given a string str
, how could I check if it is in the dd/mm/yyyy
format and contains a legal date ?
一些例子:
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
推荐答案
编辑:下面的确切解决方案
exact solution below
您可以这样做,但使用更准确的日期验证算法:
You could do something like this, but with a more accurate algorithm for day validation:
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
Date validation alg.: http://www.eee.hiflyers.co.uk/ProgPrac/DateValidation-algorithm.pdf
精确解决方案:功能,根据您的要求返回已解析的日期或空值。
Exact solution: function that returns a parsed date or null, depending exactly on your requirements.
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;
}
这篇关于如何检查字符串是否合法的“dd / mm / yyyy”日期?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文