PHP:计算服务器和客户端之间的时差

时间:2013-11-09 06:45:04

标签: javascript php jquery time

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

<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;
}
?>

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

1 个答案:

答案 0 :(得分:0)

您是否在考虑客户端和服务器之间的延迟?即使它们是同一个,如果它需要&gt;处理响应1 ms,您将得到非零差异。

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

您也可以在PHP中尝试:

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

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