我想在网络浏览器中使用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个时间戳的列表,而不是每秒打印一次。 我不知道哪里出错了。
答案 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"> </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客户端解决方案。