【问题标题】:Update Countdown Time in Javascript Every Second每秒更新 Javascript 中的倒计时时间
【发布时间】:2016-01-10 02:08:37
【问题描述】:

我有一些 PHP 脚本来回显距离事件还剩多少时间。时间以类似23h 15m 4s的格式输出

这是我的 PHP 代码:

    $now = new DateTime();
    $future_date = new DateTime($res['post_time']); # post_time is the time of event
    $interval = $future_date->diff($now);
    $time_until = rtrim(sprintf("%s%s%s",
        $interval->h > 0 ? $interval->h . "h " : "",
        $interval->i > 0 ? $interval->i . "m " : "",
        $interval->s > 0 ? $interval->s . "s " : ""
        )
    ); # Format time to not have '0'
   echo "Time until event " . $time_until;

有没有办法让 Javascript 中的时间每秒更新一次?我想回声看起来像

echo "Time until event <span id='countdown'>" . $time_until . "</span>";

JS 将在哪里使用#countdown

【问题讨论】:

  • 有很多方法可以做到这一点。您可以每秒使用一次 ajax 调用来获取更新的时间,或者您可以回显总秒数,然后通过 javascript 进行日/分/秒数学运算,这将允许您每秒倒计时/更新时间。
  • @RichardTheobald, AJAX 在这里不合适..这种方法会有延迟..
  • @RayonDabre 好点。如果选择使用 ajax,时间可能不再精确到秒。尤其是每秒都有一个电话。
  • @PhiterFernandes:没那么简单。我的 PHP 脚本删除了 0,因此时间可以采用 23h 47m 1s1h 18s 的格式,例如

标签: javascript php datetime time


【解决方案1】:

你需要做的是:

  • 将接收到的时间从 php 转换为变量。我会建议和数组像 [ 小时,分钟,秒]。
  • 使用setInterval (functionExample, 1000)
  • 在 setInterval 函数中,您只需减少秒、分钟和小时并更新 span#countdown。

var time = "5h 10m",
    time_formatted = [0,0,0],
    time_array = time.split(' ');

time_array.forEach(function(element){
    var i = -1;
    if (element.indexOf('h') > -1){
        i = 0;   
    } else if (element.indexOf('m') > -1){
        i = 1;
    } else if (element.indexOf('s') > -1){
        i = 2;
    }

    if (i != -1)
     time_formatted[i] = parseInt(element.substring(0, element.length -1));

    });

console.log(time_formatted);

【讨论】:

  • 如何将时间存储到 JS 可以读取的变量中?时间可能因23h 17m 4s12h 9s 等格式而异
  • Conversion code here 编辑:这里尝试写代码,但是没有格式化。
【解决方案2】:

您必须使用JS setInterval method

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    相关资源
    最近更新 更多