【问题标题】:Javascript hour countdown errorJavascript小时倒计时错误
【发布时间】:2012-04-02 15:18:15
【问题描述】:

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

最终解决了。

【问题讨论】:

    标签: php javascript


    【解决方案1】:

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

    如果您想在任何地方显示相同的时间,您应该获取 server 日期和时间,以便确保每个客户的时间都相同,或者您应该获取 local timezone 并应用偏移量。

    你可以看看类似的讨论:Javascript countdown using absolute timezone?

    【讨论】:

    • 我怎样才能让它占用服务器时间?
    • 我将如何获取脚本以获取服务器时间而不是本地时间?
    • 对服务器端资源进行 ajax 调用,返回小时、分钟和秒。如果您的能力听起来太复杂,只需在 javascript 中使用getTimezoneOffset()。也请看看这个讨论:stackoverflow.com/questions/8805613/…
    • JavaScript 实际上对我来说也很复杂。我只写PHP。不过我会试试看的,谢谢。
    • 如何在我当前的脚本中实现它?我实际上不知道如何解决它,我最终会让它变得更糟。
    猜你喜欢
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多