【问题标题】:displaying multiple timezones or timezone clocks in php在 php 中显示多个时区或时区时钟
【发布时间】:2011-12-12 01:54:45
【问题描述】:

我在网站上有一个演示者和查看者在全球范围内进行协作 他们都是注册用户,他们的位置(城市/州/国家)存储在 mysql 中

会议时间根据其中一个用户的本地时间在 php 上显示给两个用户,我希望其他用户的时间根据第一个用户的位置进行相应调整。 (记住美国的夏令时)

或者

我希望网页上显示所有美国时区自我更新时钟

如何做到这一点?

【问题讨论】:

  • 难道你不能将时间作为UTC/Zulu/Epoch/GMT存储在数据库中,让javascript处理时区吗?还是您希望时区与数据库位置而不是当前计算机位置相关?

标签: php javascript mysql timezone


【解决方案1】:

在数据库中,我会以 UTC 格式存储原始会议时间。我还会在用户表上有一个字段来分配 TZ 类别。

一个简单的 if/then 夏令时在该日期处于活动状态,然后转换时间。

我会使用 php 来解决所有这些问题。因为您可以结合 db pull 以在同一查询中包含 UTC + TZ 更改。然后,根据需要调整夏令时。

  • 从会议表中提取会议时间,从用户表中提取 TZ 信息(相同查询)
  • 检查夏令时
  • 根据上述调整时间
  • 将结果发送到页面。

【讨论】:

    【解决方案2】:

    在全球范围内以 UTC 存储所有时间。在显示时间时,首先要找出用户所在的时区(客户端或服务器端),并通过 php 或 javascript 相应地更改时间。设置时间时,请确保您也将用户时区排除在外,并再次将其存储为 UTC。

    【讨论】:

      【解决方案3】:

      这可以通过 javascript 和(cookie 女巫可以保存客户端时区,或 ajax 将其发送回服务器)来完成。然后你可以在 PHP 脚本上使用它来进行调整。在 javascript 中使用 getTimezoneOffset() 方法。这是一个使用它的简单脚本:

          <script type="text/javascript">
            var d = new Date()
            var gmtHours = -d.getTimezoneOffset()/60;
            document.write("The local time zone is: GMT " + gmtHours);
          </script> 
      

      【讨论】:

        猜你喜欢
        • 2017-10-20
        • 1970-01-01
        • 2013-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-20
        • 1970-01-01
        相关资源
        最近更新 更多