只做了一个倒计时 但是ie无法识别getTime()从而无法获取当前的毫秒数,使用
Date.parse(date.replace(/-/g,"/"))
会出现以下错误
下面是我的全部代码
<div id="count_down">
<div class="scene">14:00场</div>
<img src="images/purchase/index.png">
<div class="desc">距离结束还有</div>
<div class="time">
<span class="se_txt">00</span>
<i>:</i>
<span class="se_txt">00</span>
<i>:</i>
<span class="se_txt">00</span>
</div>
</div>
$(function(){
var oDate = new Date();
var nowTime = oDate.getTime(); //现在的毫秒数
oDate.setDate(oDate.getDate()); // 获取当天日期
var targetDate = new Date(oDate.toLocaleDateString()); //将当天日期转换成字符串
run(targetDate);
});
function run(enddate) {
getDate(enddate); //立即运行一次当前时间倒计时
setInterval("getDate('" + enddate + "')", 500); //然后每隔500毫秒运行一次倒计时
}
function getDate(enddate) {
var oDate = new Date(); //获取日期对象
var nowTime = oDate.getTime(); //现在的毫秒数
var enddate = new Date(enddate);
var targetTime = enddate.getTime(); // 当天时间的毫秒数
var targetHoour = Math.floor((nowTime - targetTime) / 1000); //一天中过了多少毫秒
if (targetHoour >= 28800){ //8点到14点
var second = Math.floor((targetTime + 50400000 - nowTime) / 1000);
$(".scene").html("8:00场");
}
if (targetHoour >= 50400){ //14点到20点
var second = Math.floor((targetTime + 72000000 - nowTime) / 1000);
$(".scene").html("14:00场");
}
if (targetHoour >= 72000){ //20点到24点
var second = Math.floor((targetTime + 86400000 - nowTime) / 1000);
$(".scene").html("20:00场");
}
if (targetHoour < 28800){ //24点到8点
var second = Math.floor((targetTime + 28800000 - nowTime) / 1000);
$(".scene").html("00:00场");
}
var day = Math.floor(second / 24 * 60 * 60); //整数部分代表的是天;一天有24*60*60=86400秒 ;
second %= 86400; //余数代表剩下的秒数;
var hour = Math.floor(second / 3600); //整数部分代表小时;
second %= 3600; //余数代表 剩下的秒数;
var minute = Math.floor(second / 60);
second %= 60;
var spanH = $('.se_txt')[0];
var spanM = $('.se_txt')[1];
var spanS = $('.se_txt')[2];
spanH.innerHTML = tow(hour);
spanM.innerHTML = tow(minute);
spanS.innerHTML = tow(second);
}
function tow(n) {
return n >= 0 && n < 10 ? '0' + n : '' + n;
}
我写了个方法,这是在IE运行效果你可以根据你的展示方式,改变一下
<div id="demo"></div>
//js
var timer = setInterval(function() {
getDistanceTime('2019-08-16 18:07:00', 'demo');
if (document.getElementById('demo').innerHTML === '') {
window.clearInterval(timer)
}
}, 1000);
/**
* time:倒计时结束时间(例如:'2019-08-17 18:15:00')
* DOMId:倒计时所在DOM元素的ID;
*/
function getDistanceTime(time, DOMId) {
var t1 = new Date(time.replace(/-/g, "/"));
var t2 = new Date();
var days = t1.getTime() - t2.getTime();
var day = parseInt(days / (1000 * 60 * 60 * 24));
var hour = parseInt((days - day * 1000 * 60 * 60 * 24) / (1000 * 60 * 60));
var min = parseInt((days - day * 1000 * 60 * 60 * 24 - hour * 1000 * 60 * 60) / (1000 * 60));
var s = parseInt((days - day * 1000 * 60 * 60 * 24 - hour * 1000 * 60 * 60 - min * 1000 * 60) / (1000));
min = min < 10 ? '0' + min : min;
s = s < 10 ? '0' + s : s;
var html = '';
html += "<span>距离活动开始:</span>" +
" <i>" + day + "</i>" +
" <span>天</span>" +
" <i>" + hour + "</i>" +
" <span>小时</span>" +
" <i>" + min + "</i>" +
" <span>分</span>" +
" <i>" + s + "</i>" +
" <span>秒</span>";
if (days > 0) {
document.getElementById(DOMId).innerHTML = html;
} else {
document.getElementById(DOMId).innerHTML = '';
}
}
ie 可以识别的 你的时间格式不对 如果是yyyy-mm-dd getTime()是NaN 要把时间格式改成yyyy/mm/dd