在本人最近製作的一個Demo中,需要在頁面上實現時間倒計時功能。在參考網上一些現有代碼的基礎上,形成了一套相容各種瀏覽器的時間倒計時代碼。代碼如下:
1 function DateDiff(startTime,latestTime) {
2 var aDate, oDate1, oDate2;
3 var ihours, imin, isec;
4
5 aDate = latestTime.split("-");
6 oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]);
7 if (isNaN(oDate1) == true) {
8 var tempTime = aDate[2].split(' ');
9 var time = tempTime[1].split(':');
10 oDate1 = new Date(aDate[0], aDate[1], tempTime[0], time[0], time[1], time[2]);
11 }
12
13 aDate = startTime .split("-");
14 oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]);
15 if (isNaN(oDate2) == true) {
16 var tempTime = aDate[2].split(' ');
17 var time = tempTime[1].split(':');
18 oDate2 = new Date(aDate[0], aDate[1], tempTime[0], time[0], time[1], time[2]);
19 }
20
21 ihours = parseInt((oDate1 - oDate2) / 1000 / 60 / 60);
22 imin = parseInt(((oDate1 - oDate2) - ihours * 3600 * 1000) / 1000 / 60);
23 isec = parseInt(((oDate1 - oDate2) - ihours * 3600 * 1000 - imin * 1000 * 60) / 1000);
24
25 return ihours + "小時" + imin + "分鐘" + isec + "秒";
26 }
代碼本身沒有什麼特別的地方,但是有一點需要注意:像IE*,Chrome瀏覽器都可以將yyyy-MM-dd形式的string 轉換為正確的時間。而蘋果的Safari瀏覽器卻特立獨行,不能識別。在這種情況下,如果想將某字串轉換為時間,需利用 new Date("年份","月份","日","小時","分鐘","秒")方式來解決。經過驗證,此代碼可以在IE*、Chrome、Safari瀏覽器下正確執行(firefox的特性幾乎和Chrome一樣,估計在firefox環境下此代碼也能正確執行,但沒有經過實際驗證)。