如何使用php日期函数显示本地服务器时间的不同时间?

时间:2013-06-19 03:53:50

标签: php date timezone

我理解< ?回音日期('L jS \,F Y h:i:s A'); ? >将给我“2013年6月18日星期二下午10:45:32”或我的服务器所在的日期和当地时间我相信,这是德克萨斯州。

我想显示加州时间或PDT,每次比我服务器时间晚2小时。

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

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

4 个答案:

答案 0 :(得分:4)

此示例显示如何获取另一个时区的当前时间。美国太平洋时间America/Los_Angeles的正确IANA time zone$datetime = new DateTime('NOW', new DateTimeZone('America/Los_Angeles')); echo $datetime->format('Y-m-d H:i:s');

{{1}}

另请参阅PHP documentation on Date and Time

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

答案 1 :(得分: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

答案 2 :(得分:0)

使用时间()获取时间戳。

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

然后用日期()显示它。

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

答案 3 :(得分:-1)

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

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