Javascript实现时间倒计时
在本人最近制作的一个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环境下此代码也能正确执行,但没有经过实际验证)。