如何使用PHP动态显示时间?

时间:2014-01-17 14:35:14

标签: javascript php

我想在网络浏览器中使用PHP动态显示时间。

我的代码是:

<?php
date_default_timezone_set('UTC');
for($j=0;$j<5;$j++)
{
echo nl2br("\n");
sleep(1);
echo date(" H:i:s", time());
}
?>

网页一起显示5个时间戳的列表,而不是每秒打印一次。 我不知道哪里出错了。

4 个答案:

答案 0 :(得分:6)

PHP是服务器端代码。一旦将其发送到客户端,它就无法再更新页面。要做你想做的事,你需要JavaScript。

快速谷歌提出了一些可以帮助你的网站。 This one看起来相当简单。

答案 1 :(得分:0)

使用PHP输出时间只会显示最初呈现页面的时间。您不能仅使用PHP来动态显示它的时间。如果您想要达到最终结果,则需要使用JavaScript。

使用JavaScript Date()对象的警告是,它将根据计算机或设备的设置显示客户端的时间。如果您的目标是使用服务器时间并允许它进行勾选,则需要将当前时间传递给Date(),然后每秒操作一次数据。

你基本上可以这样做:

CodePen上的工作示例: http://codepen.io/anon/pen/IAKht

<?php
date_default_timezone_set('UTC');
?>
<html>
<head>
<script>
var d = new Date(<?php echo time() * 1000 ?>);

function updateClock() {
  // Increment the date
  d.setTime(d.getTime() + 1000);

  // Translate time to pieces
  var currentHours = d.getHours();
  var currentMinutes = d.getMinutes();
  var currentSeconds = d.getSeconds();

  // Add the beginning zero to minutes and seconds if needed
  currentMinutes = (currentMinutes < 10 ? "0" : "") + currentMinutes;
  currentSeconds = (currentSeconds < 10 ? "0" : "") + currentSeconds;

  // Determine the meridian
  var meridian = (currentHours < 12) ? "am" : "pm";

  // Convert the hours out of 24-hour time
  currentHours = (currentHours > 12) ? currentHours - 12 : currentHours;
  currentHours = (currentHours == 0) ? 12 : currentHours;

  // Generate the display string
  var currentTimeString = currentHours + ":" + currentMinutes + ":" + currentSeconds + " " + meridian;

  // Update the time
  document.getElementById("clock").firstChild.nodeValue = currentTimeString;
}

window.onload = function() {
  updateClock();
  setInterval('updateClock()', 1000);
}
</script>
</head>
<body>
  <div id="clock">&nbsp;</div>
</body>
</html>

答案 2 :(得分:-1)

php是服务器端脚本语言。这意味着它返回作为 HTML 页面生成的整个页面。您无法使用循环打印或回显值。所以循环将显示所有值而不是逐个显示。

因为你必须定期显示时间。客户端和服务器端有两种方法,如下所示,

服务器端获取时间方法

<html>
<body>

    <div id="timeNow" >
    </div>

    <script>
        var d = new Date(<?php date_default_timezone_set('UTC'); echo strtotime('now')*1000 ?>);
        (function foo(){
            d.setTime(d.getTime()+1000);
            var clientTime = d.getHours() + ":"  + d.getMinutes() + ":" + d.getSeconds() + " " + (d.getHours() >= 12 ? 'pm' : 'am');
            //alert(clientTime);
            document.getElementById("timeNow").innerHTML = clientTime;
            setTimeout(foo, 1000); // refresh time every 1 second
        })();
    </script>

</body>
</html>

客户端获取时间方法

<html>
<body>

    <div id="timeNow" >
    </div>

    <script>
        (function foo(){
            var d = new Date();
            var hours = d.getHours()*12;
            var clientTime = (hours ? hours : 12) + ":"  + d.getMinutes() + ":" + d.getSeconds() + " " + (hours >= 12 ? 'pm' : 'am');
            //alert(clientTime);
            document.getElementById("timeNow").innerHTML = clientTime;
            setTimeout(foo, 1000); // refresh time every 1 second
        })();
    </script>

</body>
</html>

答案 3 :(得分:-1)

我认为php对javascript并不是一个好主意,...你不会每一秒都服务器调用。更好的是一个javascript客户端解决方案。