1

我正在为我的网站建立一个聊天,我想计算服务器和客户端之间的时间差。我正在使用以下代码来获取时差并将其放入隐藏的输入字段中。但它不起作用。

<script type = "text/javascript">
var time = new Date().getTime()/1000;
$.post('timediff.php',{time:time},function(response){
    alert(response);
});
</script>

在我的 timediff.php 文件中,我有以下代码:

<?php
if(isset($_POST['time'])){
    $client_time = $_POST['time'];
    $server_time = time();
    $time_diff = $server_time - $client_time;
    echo $time_diff;
}
?>

我在另一台与服务器具有相同时间设置的计算机上对此进行了测试,但我得到的结果更大。我做错什么了吗?有没有更好的方法来做到这一点?提前致谢。

4

1 回答 1

0

您是否考虑了客户端和服务器之间的延迟?即使它们是相同的,如果处理响应需要> 1 ms,您将获得非零差异。

编辑: 尝试getTimezoneOffset()(JavaScript,返回分钟)和DateTime::getOffset()(PHP,返回秒)。这是可能的getTime(),并且time()正在返回与时区相关的值。如果您没有在 PHP 脚本中设置时区,这也可能是一个因素。

你也可以在你的 PHP 中试试这个:

echo $client_time."\n".$server_time;

查看 JS 和 PHP 分别报告的时间可能很有用;由于多种原因,它可能与系统时间有很大不同。

于 2013-11-09T06:48:57.163 回答