我正在尝试建立时间倒计时,我正在以毫秒为单位发送时间戳,每秒我都会将此值减去当前时间以进行倒计时。
我正在使用此网站生成时间戳
https://www.epochconverter.com/
但是当我选择时间戳日为三天时,我的脚本只检查小时,分钟和秒,并忘记日,月或年。
示例:当我选择此日期时 - 11/04/2017 20:00:00
我的脚本没有显示我到达时间戳需要多少小时,显示3小时不正确
我的代码:
var updateTime = setInterval(function() {
var getEpochEnding = new Date(1492111767000);
var getTimeNow = new Date();
var timeZone = getTimeNow.getTimezoneOffset();
var ctdMillis = new Date(Math.abs(getEpochEnding - (getTimeNow - (timeZone * 60000))));
var ctdSeconds = parseInt((ctdMillis / 1000) % 60);
var ctdMinutes = parseInt((ctdMillis / (1000 * 60)) % 60);
var ctdHours = parseInt((ctdMillis / (1000 * 60 * 60)) % 24);
if ((getTimeNow - (timeZone * 60000)) > getEpochEnding) {
ctdSeconds = 0;
ctdMinutes = 0;
ctdHours = 0;
clearInterval(updateTime);
}
document.getElementById('countdown').innerHTML = ("0" + ctdHours).substr(-2) + ":" + ("0" + ctdMinutes).substr(-2) + ":" + ("0" + ctdSeconds).substr(-2);
}, 1000);
的jsfiddle:
答案 0 :(得分:-1)
从% 24
表达式中移除ctdHours
并更改ctdHours
表达式中的innerHTML
:
var updateTime = setInterval(function() {
var getEpochEnding = new Date(1492111767000);
var getTimeNow = new Date();
var timeZone = getTimeNow.getTimezoneOffset();
var ctdMillis = new Date(Math.abs(getEpochEnding - (getTimeNow - (timeZone * 60000))));
var ctdSeconds = parseInt((ctdMillis / 1000) % 60);
var ctdMinutes = parseInt((ctdMillis / (1000 * 60)) % 60);
var ctdHours = parseInt(ctdMillis / (1000 * 60 * 60));
if ((getTimeNow - (timeZone * 60000)) > getEpochEnding) {
ctdSeconds = 0;
ctdMinutes = 0;
ctdHours = 0;
clearInterval(updateTime);
}
document.getElementById('countdown').innerHTML = ctdHours + ":" + ("0" + ctdMinutes).substr(-2) + ":" + ("0" + ctdSeconds).substr(-2);
}, 1000);
虽然这个解决方案不会在几小时内显示前导零:“1:23:45”而不是原来的“01:23:45”。