Javascript小时倒计时错误

时间:2012-04-02 15:18:15

标签: php javascript

我有一个倒数计时器,使用这个脚本将时间从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上不是很好,这是由朋友创造的。

最终解决了这个问题。

1 个答案:

答案 0 :(得分:0)

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

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

您可以看一下类似的讨论:Javascript countdown using absolute timezone?