【问题标题】:Javascript countdown timer using epoch server time使用纪元服务器时间的Javascript倒数计时器
【发布时间】:2013-07-29 11:56:28
【问题描述】:

我正在尝试制作一个倒计时计时器,它可以从当前时间倒计时到未来的设定时间。我只使用 JS 就可以完美地工作,但我需要使用服务器的当前时间而不是客户端。

我尝试过使用 PHP 来获取服务器纪元时间,然后我想每秒递增一次并转换为 Javascript Date 对象,以便进行比较并将剩余时间写入 DOM。我不知道这是否可能,甚至是最好的方法,但目前它不会增加或从服务器提供有效/正确的日期。

<!DOCTYPE html>
<?php
$end_time = $_GET['time'];
$server_epoch = $_SERVER['REQUEST_TIME'];
?>
<html>
    <head>
        <script type="text/javascript">             
            var counter = setInterval(function(){
                countdown(<?= $server_epoch ?>, "<?=  $end_time?>");
                server_e++;
            }, 1000);



        /*
         * Calculates the time remaining to the nearest second from the current time until the
         * end time and updates DOM elements with id of "time" to display the formatted time(D,H,M,S)
         */
        function countdown(server, end_time){
            var current_time = new Date(server);
            var end = new Date(end_time);
            var time_left = (end - current_time) / 1000;
            if(time_left <= 0){
                document.getElementById("time").innerHTML= "Auction has ended" ;
            } else {
                var days = Math.floor(time_left / 86400);
                var hours = Math.floor(((time_left / 86400)-days) * 24);
                var mins = Math.floor(((((time_left / 86400)-days) * 24)-hours)* 60);
                var secs = Math.floor(((((((time_left / 86400)-days) * 24)-hours)* 60)-mins) * 60);
                var day_string = " days, ";
                if (days == 1){
                    day_string = " day, "                
                }      
                document.getElementById("time").innerHTML= days + day_string + hours +" hours, " + mins +" mins, "+ secs+" secs" ;  
                document.getElementById("current").innerHTML= current_time ;
                document.getElementById("ends").innerHTML= end ;
            }
        }
        </script>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <div id="time_box">
            <form method="get" action="index.php">
                <input type="text" name="time"/>
                <input type="submit" value="submit">
            </form>
            php time: <?= $server_epoch; ?><br/>
            Current time: <div id="current"></div> <br/>
            Ends: <div id="ends"></div><br/>
            Time left: <div id="time"></div>
        </div>
    </body>
</html>

【问题讨论】:

标签: php javascript time server-side epoch


【解决方案1】:

您是否曾在其他任何地方声明过 server_e 变量?看起来这是您要增加的变量,但我没有看到它在其他任何地方使用。

【讨论】:

    【解决方案2】:

    我想说更好的方法是使用http://www.datejs.com/ 并设置您的时区。

    重新发明轮子并依靠 setInterval 作为一个准确的计时器是没有用的。你马上就可以休息了。

    【讨论】:

      【解决方案3】:

      事实证明,这是一种非常尴尬的方式。这完成了我想要实现的一切here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-09
        • 1970-01-01
        • 2017-12-15
        • 1970-01-01
        • 2013-07-17
        • 2011-06-14
        相关资源
        最近更新 更多