我正在为我的网站建立聊天,我想计算服务器和客户端之间的时差。我使用以下代码来获取时差并将其放在隐藏的输入字段中。但它不起作用。
<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;
}
?>
我在另一台计算机上进行了测试,该计算机与服务器的设置时间相同,但我得到的结果更大。我做错了吗?有没有更好的方法来做到这一点?提前谢谢。
答案 0 :(得分:0)
您是否在考虑客户端和服务器之间的延迟?即使它们是同一个,如果它需要&gt;处理响应1 ms,您将得到非零差异。
编辑:尝试getTimezoneOffset()
(JavaScript,返回分钟)和DateTime::getOffset()
(PHP,返回秒数)。 getTime()
和time()
可能会返回与时区相关的值。如果您还没有在PHP脚本中设置时区,那么这也可能是一个因素。
您也可以在PHP中尝试:
echo $client_time."\n".$server_time;
查看JS和PHP每次报告的时间可能很有用;由于各种原因,它可能与系统时间有很大不同。