通用的方法来解析日期不同格式
我需要创建一个的JavaScript函数有两个字符串参数 1.日期字符串 2.日期格式字符串通用的方法来解析日期不同格式
现在,根据日期格式字符串,我想检查日期字符串格式是否正确。防爆。 1.“12-32-2012” 2.“dd-mm-yyyy”
对于上述两个值,函数应返回“false”。
这里的转折点是,用户可以将日期格式更改为任何格式,我需要相应地检查日期。我有很多搜索,但是我找不到用不同日期格式检查字符串的通用(通用)函数。这是可以实现的,还是必须为所有可能的日期格式编写不同的CASE语句。
谢谢。
也许这就是你想要的?
function chkdate(datestr,formatstr){
if (!(datestr && formatstr)) {return false;}
var splitter = formatstr.match(/\-|\/|\s/) || ['-']
,df = formatstr.split(splitter[0])
,ds = datestr.split(splitter[0])
,ymd = [0,0,0]
,dat;
for (var i=0;i<df.length;i++){
if (/yyyy/i.test(df[i])) {ymd[0] = ds[i];}
else if (/mm/i.test(df[i])) {ymd[1] = ds[i];}
else if (/dd/i.test(df[i])) {ymd[2] = ds[i];}
}
dat = new Date(ymd.join('/'));
return !isNaN(dat) && Number(ymd[1])<=12 && dat.getDate()===Number(ymd[2]);
}
//usage
console.log(chkdate ('12/12/2009', 'dd/mm/yyyy')); //=> true
console.log(chkdate ('12/32/2009', 'dd/mm/yyyy')); //=> false
console.log(chkdate ('2002/02/02', 'yyyy-dd-mm')); //=> false
console.log(chkdate ('02-12-2001', 'dd-mm-yyyy')); //=> true
console.log(chkdate ('02-12-2001', 'dd mm yyyy')); //=> false
如果我的dateformat更改为dd.mm.yyyy。我需要在代码中进行哪些更改? – 2012-04-13 22:37:34
将'formatstr.match(/ \ - | \/| \ s /)'改为'formatstr.match(/ \ - | \/| \ s | \ ./)' – KooiInc 2012-04-14 06:38:49
@Jergason看看我的问题 - 这可以实现,或者我必须为所有可能的日期格式编写不同的CASE语句。我问过代码吗? – user867198 2012-02-20 06:14:08
对不起,误解了你的问题。 – jergason 2012-02-20 15:01:07