【问题标题】:How to display the a different time then the local server time using php date function?如何使用php date 函数显示与本地服务器时间不同的时间?
【发布时间】:2013-06-19 03:53:49
【问题描述】:

我明白了 会给我“2013 年 6 月 18 日星期二晚上 10:45:32”或我的服务器所在位置的日期和当地时间,我相信是德克萨斯州。

我想显示加利福尼亚时间或 PDT 比我的服务器时间晚 2 小时。

我尝试用 但它并没有改变结果。

请注意,我不是试图从用户计算机获取数据(我们可以使用 JS 或其他用户端语言来做到这一点)。我想从服务器获取时间减去 2 小时。

【问题讨论】:

    标签: php date timezone


    【解决方案1】:

    这个例子展示了如何获取另一个时区的当前时间。美国太平洋时间的正确IANA time zoneAmerica/Los_Angeles

    $datetime = new DateTime('NOW', new DateTimeZone('America/Los_Angeles'));
    echo $datetime->format('Y-m-d H:i:s');
    

    另请参阅PHP documentation on Date and Time

    维基百科有a good reference 到可用的时区标识符。

    【讨论】:

      【解决方案2】:

      此函数将根据时区返回您的时间

      function currenttime($y,$m,$d){
              $timezone = new DateTimeZone("America/New_York");
              $date = new DateTime();
              $date->setTimezone( $timezone );
              $y=$date->format($y);
              $m=$date->format($m);
              $d=$date->format($d);
              $h=$date->format('H');
              $i=$date->format('i');
              $s=$date->format('s');
                  return mktime($h,$i,$s,$m,$d,$y);
          }
      

      要获得所需的时区,请使用此链接http://www.php.net/manual/en/timezones.php

      【讨论】:

        【解决方案3】:

        使用 time() 获取时间戳。

        将时间戳调整为您要显示的时区。

        然后用 date() 显示它。

        $ts = time() - (2*60*60); // minus 2 hours
        echo date('l jS \of F Y h:i:s A', $ts);
        

        您可以将时区固定为 UTC,以避免服务器时区设置的影响。

        date_default_timezone_set('UTC');
        

        或者只是使用 gmdate() 而不是 date(),以 UTC 时区显示。

        $ts = time() - (2*60*60); // minus 2 hours
        echo gmdate('l jS \of F Y h:i:s A', $ts);
        

        【讨论】:

        • 坏主意。这实际上会改变时间,而不是针对区域进行调整。此外,您非常依赖您的服务器时区设置和时区规则知识。 PHP 可以为您做到这一点。
        【解决方案4】:

        这可能会给你一个想法..

        <?php
        echo '2 hours behind my server time: '. date('Y-m-d h:m:i', strtotime('+2 hour')) ."\n";
        ?>
        

        【讨论】:

        • 这只是在格式化时增加了两个小时的输出时间。它不会考虑任何时区规则。并且 OP 说他无论如何落后两个小时。
        • 你问:“我想显示加利福尼亚时间或 PDT 比我的服务器时间晚 2 小时”,上面的代码显示比服务器时间晚 2 小时。 ..如果你想显示从服务器减去 2 小时的时间,你应该写 ('-2 hour')
        猜你喜欢
        • 1970-01-01
        • 2013-02-27
        • 1970-01-01
        • 1970-01-01
        • 2011-02-14
        • 1970-01-01
        • 1970-01-01
        • 2016-05-12
        • 2017-01-14
        相关资源
        最近更新 更多