我希望在我的天气网站上显示当前的当地时间。
这是我在查询中使用的代码:“使用Ajax自动更新PHP时间”2年前发布
<?php
echo "<html>
<head>
<title>Realtime clock</title>
<meta charset='UTF-8'>
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<script src='http://code.jquery.com/jquery.js'></script>
<script>
$(document).ready(function(){
setInterval(_initTimer, 1000);
});
function _initTimer(){
$.ajax({
url: 'timer.php',
success: function(data) {
console.log(data);
data = data.split(':');
$('#hrs').html(data[0]);
$('#mins').html(data[1]);
$('#secs').html(data[2]);
}
});
}
</script>
</head>
<body>
<span id='hrs'>0</span>:<span id='mins'>0</span>:<span id='secs'>0</span>
</body>
</html>"; ?>
<?php date_default_timezone_set("Australia/Brisbane");
echo "Current Time: ". date("H:i:s"). " AEST";
?>
这是我在运行时获得的:
17:05:10当前时间:17:01:30 AEST
我的目标是: 当前时间:17:05:10 AEST,每秒更新一次。 在最终的echo语句中是否需要添加一些内容?或者做点别的事情
请帮助
由于
答案 0 :(得分:0)
要显示每秒的当前时间,您可以使用jquery显示时间,而不是每秒在服务器上运行ajax
试试这个:
var nIntervId;
function updateTime() {
nIntervId = setInterval(flashTime, 1000);
}
function pad(n) { return ("0" + n).slice(-2); }
Number.prototype.pad = function (len) {
return (new Array(len+1).join("0") + this).slice(-len);
}
function flashTime() {
var now = new Date();
var h = now.getHours().pad(2);
var m = now.getMinutes().pad(2);
var s = now.getSeconds().pad(2);
var time = h + ' : ' + m + ' : ' + s;
$('#my_box1').html(time);
}
$(function() {
updateTime();
});
&#13;
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
<div id="my_box1">
</div>
&#13;
答案 1 :(得分:0)
我假设你已经制作了一个单独的timer.php文件来回显服务器时间。由于您当前的页面只加载一次,因此不会更新初始服务器时间,即“当前时间值”。而由于ajax代码,剩余的DOM将使用服务器时间进行更新。如果您希望两个时间相同,则必须重新加载整个页面,这是不正确的。因此,我建议你只显示一次应该是你的ajax结果。 timer.php:
<?php
date_default_timezone_set("Australia/Brisbane");
echo date("H:i:s");
?>