我有一个倒数计时器,使用这个脚本将时间从H:i:s转移到长版:
function parseTime() {
var timeLeftStr;
var timeLeft = 0;
timeLeftStr = document.getElementById("timeleft").innerHTML;
timeLeftStr.replace(/(\d+):(\d+):(\d+)/, function () {
for (var i = 1; i < arguments.length - 2; i++) {
// Convert to ms
timeLeft += arguments[i] * Math.pow(60, 3 - i) * 1000;
}
});
countdown(new Date(timeLeft));
}
function countdown(timeLeft) {
var hours = timeLeft.getHours();
var minutes = timeLeft.getMinutes();
var seconds = timeLeft.getSeconds();
if (timeLeft.valueOf() == 0) {
document.getElementById("timeleft").innerHTML = "0 seconds";
window.location = 'home.php?pageid=' + getURLParam("pageid");
return false;
} else {
document.getElementById("timeleft").innerHTML =
(hours == 0 ? "" : hours + (hours == 1 ? " hour" : " hours")) +
(minutes == 0 ? "" : (hours ? (seconds ? ", " : " and ") : " ") + minutes + (minutes == 1 ? " minute" : " minutes")) +
(seconds == 0 ? "" : (hours || minutes ? " and " : "") + seconds + (seconds == 1 ? " second" : " seconds"));
setTimeout(function () { countdown(new Date(timeLeft - 1000)); }, 1000);
}
}
window.onload = parseTime;
错误在于我的一位住在澳大利亚的用户一直在错误的“小时” 原来的计时器会说“23:45:05”,但倒数计时器开始时会显示“10小时45分5秒”,而不是23小时。
知道为什么会这样吗?谢谢。
我在JS上不是很好,这是由朋友创造的。
最终解决了这个问题。
答案 0 :(得分:0)
如果你想在任何地方显示相同的时间,你应该得到server
日期和时间,这样你就可以确定每个客户都是一样的,或者你应该得到local timezone并应用偏移量。
您可以看一下类似的讨论:Javascript countdown using absolute timezone?