Javascript小时倒计时错误


Javascript hour countdown error

我有一个倒计时计时器,它使用以下脚本将时间从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,这是一个朋友创建的。

最后解决了。

好吧,之所以会发生这种情况,是因为javascript从客户端获取当前日期和时间:所以当你所在的国家/地区是23点时,在世界的另一个地方,向页面发出请求的客户端将显示不同的小时(可能是一天)

如果你想在任何地方显示相同的时间,你应该得到server的日期和时间,这样你就可以确保每个客户都是相同的,或者你应该得到本地时区并应用偏移量。

你可以看看类似的讨论:使用绝对时区的Javascript倒计时?