JavaScript - 如何获得 PHP 服务器的正确时间?

JavaScript - How can i get the correct time of PHP server?

我需要显示 PHP 服务器日期的中心计时器,这里是日期 1。 (关于比利时时间的会议,来自不同国家的其他人加入会议以实时查看会议持续时间。)

date1 变量值来自位于比利时的 PHP 服务器。 但是用户在美国、中东、亚洲、澳大利亚,并且浏览器日期与 PHP 服务器日期不同。

如何在不以比利时身份爬行到服务器的情况下获取 date2 值 date/time?这样我就可以在 date2 实时显示目瞪口呆。

var date1 = new Date("10-01-2016 09:00:00"); // Meeting at PHP SERVER date 
var date2 = new Date("10-01-2016 09:30:32"); // User joined remotely but Browser date is wrong here

var diff = date2.getTime() - date1.getTime();
var msec = diff;
var hh = Math.floor(msec / 1000 / 60 / 60);
msec -= hh * 1000 * 60 * 60;
var mm = Math.floor(msec / 1000 / 60);
msec -= mm * 1000 * 60;
var ss = Math.floor(msec / 1000);
msec -= ss * 1000;

alert(hh + ":" + mm + ":" + ss);

我想你可以使用这个答案:Getting the client's timezone in JavaScript 获取客户端(浏览器)时区偏移量,php 服务器可以将此信息与 date1 一起发送,从这里很容易转换正如你已经做过的那样。

另一种方法可能是服务器也发送当前时间(类似于日期 http header 可能是什么)并且客户端可以在变量中保存它收到时客户端上的时间http,然后计算服务器时钟和客户端时钟之间的差异。这样它不仅可以计算出比利时的上午 9 点是纽约的凌晨 2 点,还可以在客户端显示一个与服务器时间同步的计数器(这意味着即使客户端的时钟关闭 2 分钟,计数器也可以是准确到服务器的时钟,所以所有人都会看到相同的计数器,无论他们的客户端时钟是否准确(这是一个很好的功能,即使我们不考虑不同的时区))

所以在你的 php 除了 date1="10-01-2016 09:00:00" 你也会发送

server_date="<?php date('...') ?>"

对格式字符串使用 http://php.net/manual/en/function.date.php:)

然后在 javascript onLoad 回调的最开始你会做:

client_date = new Date();

现在你可以做你的算术(用伪代码):

elapsed_since_start = date1 + (server_date - client_date)

当然,如果您需要考虑不同的时区,那么您也需要考虑这一点:

elapsed_since_start = (date1-server_tz_offset) + ((server_date-server_tz_offset) - (client_date-client_tz_offset))