【问题标题】:Change Sydney Date Time to GMT in PHP在 PHP 中将悉尼日期时间更改为 GMT
【发布时间】:2012-07-01 14:46:14
【问题描述】:

我有一个字符串,其中包含日期/时间,我知道它当前位于澳大利亚/悉尼时区。

我现在需要将其更改为 GMT 时间。

我试过了,但它没有改变日期:

$dateString = '2012-06-29 11:09:12'; // this is in Australia/Sydney timezone
$gmtDate = gmdate('Y-m-d H:i:s', strtotime($dateString));
print_r($gmtDate); // output is 2012-06-29 11:09:12

我如何以某种方式从 gmt 中减去偏移量,抱歉,有点困惑。

【问题讨论】:

    标签: php datetime


    【解决方案1】:

    也许您的网络服务器没有设置在澳大利亚/悉尼时区? 以下答案将对您有所帮助:how to convert php date formats to GMT and vice versa?

    你可以这样做:

    $melbourne = new DateTimeZone('Australia/Melbourne');
    $gmt = new DateTimeZone('GMT');
    
    $date = new DateTime('2011-12-25 00:00:00', $melbourne);
    $date->setTimezone($gmt);
    echo $date->format('Y-m-d H:i:s');
    // Output: 2011-12-24 13:00:00
    // At midnight on Christmas eve in Melbourne it will be 1pm on Christmas Eve GMT.
    
    echo '<br/>';
    
    // Convert it back to Australia/Melbourne
    $date->setTimezone($melbourne);
    echo $date->format('Y-m-d H:i:s');
    

    【讨论】:

      【解决方案2】:

      在脚本中使用 ini_set() 将当前时区设置为例如洛杉矶使用的时区,您可以这样做:

      ini_set('date.timezone', 'America/Los_Angeles');
      

      对日期和时间函数的所有后续请求都将使用美国/洛杉矶作为时区。

      如果您需要在脚本中执行此操作,例如,如果您使用的网络服务器与您希望在脚本中使用的日期和时间位于不同的时区,那么您应该确保在脚本的最开始(或者,如果可以,将设置移到 .htaccess 文件中)。

      【讨论】:

        【解决方案3】:

        PHP 支持时区,查看这里:

        date_default_timezone_set function List of Supporting Timezones

        例如:

        date_default_timezone_set('Australia/Sydney');
        echo date('Y-m-d H:i:s') . '<br/>';
        
        date_default_timezone_set('Asia/Jakarta');
        echo date('Y-m-d H:i:s') . "<br/>";
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-10-09
          • 1970-01-01
          • 2023-03-30
          • 2013-06-01
          • 1970-01-01
          • 2018-04-13
          • 2017-02-20
          相关资源
          最近更新 更多