在 PHP 中将悉尼日期时间更改为 GMT


Change Sydney Date Time to GMT in PHP

我有一个包含日期/时间的字符串,我知道它目前在澳大利亚/悉尼时区。

我现在需要将其更改为格林威治标准时间。

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

$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 日期格式转换为 GMT,反之亦然?

以下是您可以执行的操作:

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

在脚本中使用 ini_set() 将当前时区设置为例如洛杉矶使用的时区,您将执行以下操作:

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

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

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

PHP 支持时区,请查看此处:

date_default_timezone_set功能支持时区列表

前任:

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/>";