1

我明白了 < ? echo date('l jS \of FY h:i:s A'); ? > 会告诉我“2013 年 6 月 18 日星期二晚上 10:45:32”或我的服务器所在的日期和当地时间,我相信是德克萨斯州。

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

我试图用 < 更改时区?date_default_timezone_set('PDT'); ? > 但它并没有改变结果。

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

4

4 回答 4

5

此示例说明如何获取另一个时区的当前时间。美国太平洋时间的正确IANA 时区America/Los_Angeles

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

另请参阅有关日期和时间的 PHP 文档

维基百科对可用的时区标识符有很好的参考。

于 2013-06-19T04:15:56.263 回答
1

此功能将根据时区返回您的时间

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

于 2013-06-19T04:21:42.690 回答
0

使用 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);
于 2013-06-19T03:58:48.000 回答
-1

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

<?php
echo '2 hours behind my server time: '. date('Y-m-d h:m:i', strtotime('+2 hour')) ."\n";
?>
于 2013-06-19T04:01:43.087 回答