【问题标题】:Converting between timezones in PHP在 PHP 中的时区之间转换
【发布时间】:2011-07-27 01:33:16
【问题描述】:

我正在转换这个时间和日期:

Thu, 31 Mar 2011 02:05:59 GMT

转为以下时间日期格式:

Monday March 28 2011 4:48:02 PM

我正在使用以下 PHP 代码来完成此操作,但我想将所有时区转换为 PST/PDT。我查看了 PHP 手册并看到了这个 date_default_timezone_set(),但我不确定如何在下面的代码中实现它。

$date = $messages[0]->CreationTime;
echo date('l F j Y g:i:s A I', strtotime($date))

【问题讨论】:

    标签: php datetime timezone


    【解决方案1】:

    我不会将date_default_timezone_set 用于一般的 TZ 转换。 (澄清一下......如果这是出于显示目的,脚本范围内,那么使用默认时区是合理的做法。)

    相反,我会使用类似的东西:

    $tz = new DateTimeZone('America/Los_Angeles');
    
    $date = new DateTime('Thu, 31 Mar 2011 02:05:59 GMT');
    $date->setTimezone($tz);
    echo $date->format('l F j Y g:i:s A I')."\n";
    

    【讨论】:

    • 正确,使用 date_default_timezone_set 会改变整个应用的时区。
    【解决方案2】:
    $date = $messages[0]->CreationTime;
    date_default_timezone_set('America/Los_Angeles');
    echo date('l F j Y g:i:s A I', strtotime($date));
    

    请参阅this list 了解传入函数的可用时区

    【讨论】:

    • 以下是 date_default_timezone_set 中支持的参数列表:php.net/manual/en/timezones.php
    • 更改默认时区是个坏主意。你真的应该在你的 php.ini 文件中做那种事情。如果您更改默认时区,其他日期可能会在您不期望的情况下受到影响。
    • @BrentLarsen 时区应该是每个应用程序而不是全局服务器上的。
    猜你喜欢
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2016-11-06
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多