2012-02-20 34 views
0

我需要創建一個的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

回答

1

也許這就是你想要的?

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