如何获得第一次从服务器通过php和JavaScript


How to get first time from server by php and put in JavaScript

我如何获得第一次从服务器通过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对象,然后存储一个已经过了多少秒的计数,并计算

的差值。