【一天一道兼容性】之——IE下new Date()的傳參格式
少敘閑言
在表單中我們常用到輸入日期,有日期就會有格式要求,所以我們會采用插件一類的方法來統(tǒng)一輸入格式,例如yyyy-mm-dd、yyyy/mm/dd,這一類的格式在直接以字符串的形式傳入Date()來獲取時間對象的時候,Chrome和FF都會表現(xiàn)正常,但IE下全系歇菜......
正題
demo:
1 var time_1 = "2012-12-12"; 2 var time_2 = "2012/12/12"; 3 4 alert(new Date(time_1)) //Chrome/FF: Thu May 30 2013 09:40:45 GMT+0800 (中國標準時間) IE678: NaN IE9: Invalid Date 5 alert(new Date(time_2)) //Chrome/FF: Thu May 30 2013 09:40:45 GMT+0800 (中國標準時間) IE678: NaN IE9: Invalid Date
解析:
IE不支持這種格式,而是支持yyyy,mm,dd,注意此處數(shù)據(jù)類型為數(shù)字類型,而且月份要減1
解決方案:
1 var time_1 = "2012-12-12"; 2 var time_2 = "2012/12/12"; 3 function fixDate(time) { 4 if (!document.all) { 5 return new Date(time); 6 } 7 var arr = time.split(time.match(/\D+/g)[0]); 8 return new Date(arr[0], arr[1] - 1, arr[2]); 9 } 10 alert(fixDate(time_1)) 11 alert(fixDate(time_2))
匯總一下new Date的一些傳參格式:
month:用英文 表示月份名稱,從January到December
mth:用整數(shù)表示月份,從0(1月)到11(12月)
dd:表示一個 月中的第幾天,從1到31
yyyy:四位數(shù)表示的年份
hh:小時數(shù),從0(午夜)到23(晚11點)
mm: 分鐘數(shù),從0到59的整數(shù)
ss:秒數(shù),從0到59的整數(shù)
ms:毫秒數(shù),為大于等于0的整數(shù)
new Date("January 12,2006 22:19:35");
new Date("January 12,2006");
new Date(2006,0,12,22,19,35);
new Date(2006,0,12);
new Date(1137075575000);
上面的各種創(chuàng)建形式都表示2006年1月12日這一天。
浙公網(wǎng)安備 33010602011771號