【问题标题】:show clock with php [closed]用php显示时钟[关闭]
【发布时间】:2012-06-04 19:42:21
【问题描述】:

我想在我的网页上显示服务器时间。我已经使用 javascript 代码完成了客户端时间,但我如何显示服务器时间?

是否有任何 zendFramework 类可以做到这一点?

我正在使用下面的 javascript 代码来显示客户端时间:

<head>
<script language="javascript" type="text/javascript">
function startTime()
{
        var today=new Date();

        var h=today.getHours();
        var m=today.getMinutes();
        var s=today.getSeconds();

        // add a zero in front of numbers<10
        m=checkTime(m);
        s=checkTime(s);

        document.getElementById("time_section").innerHTML=h+":"+m+":"+s;
        t=setTimeout('startTime()',500);

}

function checkTime(i)
{
        if (i<10)
         {
              i="0" + i;
         }
        return i;
}
</script>

</head>

<body onload="startTime()">
</body>

【问题讨论】:

  • 你为什么发布不相关的代码? :)
  • 关于 Ajax 回调
  • 您可以通过快速的 google 搜索回答您自己的问题。
  • 你真的应该去阅读一些关于客户端和服务器端区别的东西。看来你还不太明白这个概念。
  • @baudday, fvu, Bono:这个问题可能被问得很糟糕,但是来吧,努力看看真正被问到了什么。是的,它与 PHP 没有太大关系,但除了 gowri 之外,没有人能接近解决他的问题:动态显示服务器时间。

标签: php javascript jquery ajax


【解决方案1】:

使用日期函数显示服务器时间:

<?php echo date('Y-m-d H:i:s'); ?>

如果你的意思是实时时钟,你不能用 php 做到这一点,坚持使用 javascript

【讨论】:

  • 完全正确,对提问者完全没用,因为他显然是指实时时钟。
  • 你也可以从你的 php 中打印时间变量,然后用 JS 不断地增加它(显然,根据页面加载时间可能会有几 (mili) 秒的延迟),但这是可能的。 (请注意,OP 用 JS 标记了他的问题)。
  • @Amadan 不,他显然不是指实时时钟。他想要服务器时间。这就是为什么我说“如果你的意思是实时时钟......”
  • @Vlad:我不是特别有礼貌,因为很多人对提问者不是特别有礼貌或公平。看到类似“你为什么发布不相关的代码?”这样的评论令人沮丧。当他发布的代码是理解问题的关键时,被投票 6 次。如果您阅读代码, 很明显他的意思是什么(即与 this 相同,但数字不同)。他贴上标签 PHP 和 JS,因为他可能不知道什么技术可以让他得到他想要的东西。您确实说过“如果您的意思是实时时钟...”,但接下来的内容甚至不足以解决他的问题。
  • @Amadan 正如我所说。每个人都以自己的方式看待这一点。尽可能清楚地说明他的问题是提问者的责任。 “如何根据服务器时间使用 javascript 创建实时时钟?” - 会澄清一切。我只是说。我已经表达了我的观点,我退出了。
【解决方案2】:

修改你的代码,setTimeout 函数只会每分钟增加客户端的时钟,然后使用 php 用服务器时间初始化 today javascript 变量,如下所示:

// time() returns seconds, multiply by 1000 to get millisenconds
var today = new Date(<?php echo time() * 1000?>);  

那么 javascript 时钟应该与客户端中的服务器时间保持同步

或者,您可以通过每隔一定时间(p.e 一个小时)执行一个 ajax 请求来与服务器时间同步

【讨论】:

    【解决方案3】:

    通过 AJAX 向服务器询问时间,作为 UNIX 时间戳(PHP 函数 time())。到达时,获取与本地时间戳的差值(var timeDiff = new Date() - serverTime * 1000);修改您不太相关的代码以显示 new Date() + timeDiff 而不是 new Date()

    让我们尝试一些代码:

    var timeDiff;
    $.ajax('time.php', {      
      success: function(serverTime) {
        timeDiff = new Date() - serverTime * 1000;
        startTime();
      }
    });
    

    在您的startTime 中将newDate() 替换为newDate() + timeDiff。在服务器端,很简单,在time.php:

    header('Content-Type: text-json');
    echo time();
    

    没有检查,所以可能有错误。警告购买者。

    h3nr1x 的解决方案也可以,但这样您就不必担心会不同步。

    一个小故障是客户端的时间计算都是在本地时区完成的;如果您在与服务器不同的时间跨过 DST 时间,这将影响您,同时显示的时间将不正确。我不知道如何设置 JavaScript 的 Date 对象的时区,或者是否有可能。 :(

    【讨论】:

      【解决方案4】:

      设置服务器时区

      date_default_timezone_set('America/Los_Angeles');
      

      将显示 17:16:18

      $currentTime = date("H:i:s");
      

      请参阅date_default_timezone_set()date() 了解确认选项。

      【讨论】:

        【解决方案5】:

        您可以使用 AJAX 来实现。有一个 php 页面,它回显当前时间并每秒更新一次或使用 ajax 进行更新。

        【讨论】:

        • 每秒一个请求?不用了。
        • @Amadan 请更有礼貌。每个人对问题的看法都不一样
        猜你喜欢
        • 2013-12-18
        • 1970-01-01
        • 2010-09-06
        • 1970-01-01
        • 1970-01-01
        • 2012-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多