我正在为一家公司提供实时Feed,以显示当前24小时内的生产计划状态。问题是一些员工需要能够从国外和不同的时区查看这个实时订阅源。
有2个元素需要显示当前时间"现场" (服务器):
必须在现场显示当前时间的时钟。
进度条显示当前24小时的进度 期间现场。
我知道同步时间是低效的。我不确定如何抵消客户端上与服务器匹配的时间,因为我可能会遇到很多问题:
如果有任何经验/想法可以提供帮助,我们将不胜感激。
由于
答案 0 :(得分:3)
服务器时间应为UTC。这样,移动时区变得更容易。
不依赖于客户端的时区,因为它取决于客户端的机器,可以设置为任何时间和时区。拥有一个需要时区的帐户。用于时区偏移。同样的原因,为什么在线服务会询问您的时区而不是检测它。
然后你可以去区间同步或套接字。请注意,延迟可能会延迟几秒钟。
间隔同步
您可以让服务器提供初始时间和时区偏移量。根据这些初始数据计算客户端的初始时间,并让客户端进行滴答。由于脚本可能不同步,因此您需要定期同步到服务器,例如每隔5分钟左右。
<强>套接字强>
让服务器计算用户在其时区的时间,并每秒通过套接字将其发送到线路。您需要在客户端执行此操作才能显示它。
答案 1 :(得分:1)
直接来自the MDN website:
var x = new Date();
var currentTimeZoneOffsetInHours = x.getTimezoneOffset() / 60;
这将获得UTC与当地时间之间的时区偏移(以分钟为单位)(上面的示例除以60以转换为小时)。这已经解释了夏令时。
如果您的服务器将服务器时区偏移量放在页面中的变量中,或者将其与实时数据一起发送,或者如果实时数据是UTC时间,那么您可以计算客户端和数据之间的差异。
答案 2 :(得分:0)
让您的用户选择他们所在的时区(通过下拉列表或选项页面)并使用php的本机函数date_default_timezone_set进行设置。
date_default_timezone_set( “欧洲/布鲁塞尔”);
然后自动计算主机服务器和用户之间的时差,并且还可以节省夏令时。
文档在这里:https://php.net/manual/en/timezones.php
然后使用php的日期函数显示时间:
日期( “C”); // ISO 8601日期