我如何获得第一次从服务器通过php?
我已经测试了这段代码,但它不工作。它得到了时间,但它不算数?有什么问题吗?<script type="text/javascript">
function GetClock(){
d = new Date(<?php echo date("y, n, j, G, i, s");?>);
nhour = d.getHours();
nmin = d.getMinutes();
nsec = d.getSeconds();
if(nhour == 0) {
ap = " AM";nhour = 12;
} else if(nhour <= 11) {
ap = " AM";
} else if(nhour == 12) {
ap = " PM";
} else if(nhour >= 13) {
ap = " PM";nhour -= 12;
}
if(nmin <= 9) {
nmin = "0" +nmin;
} if(nsec <= 9) {
nsec = "0" +nsec;
}
document.getElementById('clockbox').innerHTML=""+nhour+":"+nmin+":"+nsec+ap+"";
setTimeout("GetClock()", 1000);
}
window.onload=GetClock;
</script>
说明
问题是为什么你用PHP写一个日期时间到Date
对象在JS?
PHP只会写出页面呈现时的时间,它将永远不会再改变。
然后你基于Javascript setTimeout
每1秒设置你的计数器,期望时钟以秒为单位增加,但它总是基于相同的原始时间(页面渲染时间),并且总是增加1秒。
。页面加载时间为2013年6月3日12:00:00。你的代码看起来像这样:
d = new Date(13, 6, 3, 12, 0, 0);
在页面加载时(如果您查看源代码)
1秒后,setTimeout
触发并根据date对象中的开始时间呈现12:0:01的时钟。
但是你的开始时间永远不会改变,所以每过一秒触发setTimeout
将基于12:00:00
而不是当前时间
TLDR;并回答
删除PHP!
d = new Date();
或者,如果您绝对有使用服务器时间。您需要像前面那样初始化date对象,然后存储一个已经过了多少秒的计数,并计算