0

我刚刚写了另一个问题,但它写得不好,根本无法理解,在这里我将粘贴我在 atm 完成的工作,以及我的问题:

  • 我想在我的网页上显示一个时钟(它基于 wordpress) 显示服务器的实际时间(很重要,因为我有世界各地的访问者)。

-我确实需要 SERVER 时间,因为我需要倒计时,每天都一样,从晚上 19​​:00 到凌晨 03:00。

这是我到目前为止的代码(我刚刚翻译了它,因为它是西班牙语,所以它应该运行良好”)

  <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script type="text/javascript">
    //Variables
    var date1;
    var seconds;
    var minutes;
    var hours;
    var x;

    var startHour = 19;

    var finalHour = 3;

    var diferencia1;
    //Funcion principal
    x = $(document);
    x.ready(timer_test);  
    //funcion del timer_test
    function timer_test() {
        x= $("#timer");
        date1 = new Date(<?php echo time() * 1000 ?>);
        seconds = date1.getSeconds();
        minutes = date1.getMinutes();
        hours = date1.getHours();


        if (hours > startHour | hours < finalHour) {
        diferencehours = startHour - hours -1;
        diferenceminutes = 60 - minutes -1;
        diferenceseconds = 60 - seconds;

        x.html("All of our services are running.");

    }

        else if(hours < startHour && hours >= finalHour) {
        diferencehours = startHour - hours -1;
        diferenceminutes = 60 - minutes -1;
        diferenceseconds = 60 - seconds;

        x.html(diferencehours + ":" + diferenceminutes + ":" + diferenceseconds);

        }

    }

    //Interval
    setInterval(timer_test,1000);




  </script>


    <div id="timer"></div>

我发现的问题之一是,时钟只是卡住了,时间根本没有改变。

解决方案?我该如何改进呢?

谢谢

4

2 回答 2

0

当页面由 php 提供时,代码<?php echo time() * 1000 ?>只会运行一次。每次我们看到代码时,它都不会从服务器更新它。

尝试这样的事情:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript">
    //Variables
    var epoch_time = <?= time() ?>000;
    var startHour = 19;
    var finalHour = 3;

    //Funcion principal
    function timer_test() {
        var date1 = new Date(epoch_time);
        var seconds = date1.getSeconds();
        var minutes = date1.getMinutes();
        var hours = date1.getHours();
        var diferencehours = startHour - hours -1;
        var diferenceminutes = 60 - minutes -1;
        var diferenceseconds = 60 - seconds;

        if (hours > startHour | hours < finalHour) {
            $("#timer").html("All of our services are running.");
        }
        else if(hours < startHour && hours >= finalHour) {
            $("#timer").html(diferencehours + ":" + diferenceminutes + ":" + diferenceseconds);
        }

        epoch_time += 1000;
    }

    $(function() {
        //Interval
        setInterval(timer_test,1000);
    });

  </script>

  <div id="timer"></div>
于 2013-06-12T16:12:27.520 回答
0

不知道从哪里开始,可以使用很多清理:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript">
var serverTime = <?php print time()?>;
var tracking = {start:19,end:3};
tracking.timer = setInterval(function () {

    var now = new Date(serverTime);
    var seconds = now.getSeconds();
    var minutes = now.getMinutes();
    var hours = now.getHours();

    if (hours > tracking.start || hours < tracking.end) {
       $("#timer").html("All of our services are running.");
    } else {

        var remainHours = tracking.start - hours -1;
        var remMinutes = 60 - minutes -1;
        var remSeconds = 60 - seconds;
         $("#timer").html(remainHours + ":" + remMinutes + ":" + remSeconds);
    }

    serverTime+=1000;

 },1000);

 </script>

tl; dr:您需要在每次滴答时增加服务器时间。

  1. 我建议从主脚本中排除 php,或者将其移到顶部以便更容易发现,因为它可能很难找到/维护。
  2. 清理 jquery 调用,您不需要将它们放在 var 中。
  3. 删除了额外的变量。
  4. 一般清理/可读性。
于 2013-06-12T16:23:43.493 回答