【问题标题】:How to supply a value to the javascript method Date.setTime() from PHP?如何从 PHP 向 javascript 方法 Date.setTime() 提供值?
【发布时间】:2010-10-05 10:23:05
【问题描述】:

是时间()吗? 是 time().substr(microtime(), 2, 2) 吗? 是time().substr(microtime(), 2, 3)吗?

有点迷失了以下 sn-p。

function updateClock ( ) {
    var timeStamp = <?php echo time().substr(microtime(), 2, 2);?>;
    var currentTime = new Date ( );
    currentTime.setTime( timeStamp );

    ...
    ...
}

我的目标是使用服务器时间并从客户端浏览器窗口开始计时。上面的代码要么返回当前客户端计算机时间,要么返回 1973 年的某个时间。我想我没有得到正确的 setTime() 时间戳格式?

谢谢!

  • 1000

我试过了,但是在我将 js.php(呈现 javascript 代码)上传到我的服务器后,网页仍然显示我的本地时间。我的服务器与我的时间相差大约 12 小时。我的猜测是 php 是否将客户端时间考虑到运行时间()?我的意思是浏览器确实会向 apache 发送请求时间,对吗?

我从我的服务器上运行的网页复制了 time() * 1000 返回值并将其粘贴到本地页面中:

<script type="text/javascript">

var d = new Date();
d.setTime(1233760568000);
document.write(d);

</script>

这确实是我的当地时间。因此猜测。

有没有为 time() 指定时区?

【问题讨论】:

  • php 无法读取客户端时间。另外,请检查您的服务器和客户端是否在同一时区。您可以使用 php 函数 gmdate() 来获取与时区无关的时间。如果您还有其他问题,请将它们发布在新条目中,以便人们看到。这不是一个讨论区。

标签: php javascript time clock


【解决方案1】:

Date.setTime 预计自 1970 年 1 月 1 日以来的 毫秒 数。 php 的 time function 产生自 1970-1-1 以来的 数。因此,您可以使用

var TimeStamp = <?php echo time()*1000;?>

由于延迟问题(浏览器需要在启动 JavaScript 之前加载整个页面),时间通常会漂移一到几秒钟。

【讨论】:

    【解决方案2】:

    乘以 1000。JavaScript 需要毫秒,而 PHP 返回秒。

    【讨论】:

      【解决方案3】:

      Date.setTime() 想要从 Unix 纪元开始的毫秒数,time() 返回从那以后的秒数。如果不需要绝对精度(鉴于您的方法,我认为不需要),只需将您从 time() 获得的值乘以 1000

      编辑:被打了两次--D'oh

      【讨论】:

        猜你喜欢
        • 2011-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多