也許這就是你想要的?
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
@Jergason看看我的問題 - 這可以實現,或者我必須爲所有可能的日期格式編寫不同的CASE語句。我問過代碼嗎? – user867198 2012-02-20 06:14:08
對不起,誤解了你的問題。 – jergason 2012-02-20 15:01:07