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

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

本文关键字:服务器 时间 PHP 何获取 获取 JavaScript-      更新时间:2023-09-26

我需要显示一个以PHP SERVER DATE为中心的计时器,这里是date1。(这是关于在比利时时间举行的一次会议,来自不同国家的其他人参加会议,实时查看会议的持续时间。)

date1变量值来自比利时的PHP服务器。但用户在美国、中东、亚洲、澳大利亚,浏览器的日期和PHP服务器的日期不一样。

如何在不作为比利时日期/时间爬网到服务器的情况下获得date2值?这样我就可以在date2实时显示gape了。

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);

我认为您可以使用这个答案:获取客户端';使用JavaScript中的时区来获取客户端(浏览器)时区偏移量,php服务器可以将此信息与date1一起发送,从这里可以很容易地进行转换。

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

因此,在您的php中,除了date1="10-01-2016 09:00:00"之外,您还将发送

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

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

然后在onLoad回调一开始的javascript中,您将执行以下操作:

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))