通用的方法来解析日期不同格式

问题描述:

我需要创建一个的JavaScript函数有两个字符串参数 1.日期字符串 2.日期格式字符串通用的方法来解析日期不同格式

现在,根据日期格式字符串,我想检查日期字符串格式是否正确。防爆。 1.“12-32-2012” 2.“dd-mm-yyyy”

对于上述两个值,函数应返回“false”。

这里的转折点是,用户可以将日期格式更改为任何格式,我需要相应地检查日期。我有很多搜索,但是我找不到用不同日期格式检查字符串的通用(通用)函数。这是可以实现的,还是必须为所有可能的日期格式编写不同的CASE语句。

谢谢。

+0

@Jergason看看我的问题 - 这可以实现,或者我必须为所有可能的日期格式编写不同的CASE语句。我问过代码吗? – user867198 2012-02-20 06:14:08

+0

对不起,误解了你的问题。 – jergason 2012-02-20 15:01:07

也许这就是你想要的?

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 
+0

如果我的dateformat更改为dd.mm.yyyy。我需要在代码中进行哪些更改? – 2012-04-13 22:37:34

+1

将'formatstr.match(/ \ - | \/| \ s /)'改为'formatstr.match(/ \ - | \/| \ s | \ ./)' – KooiInc 2012-04-14 06:38:49