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

时间:2012-06-30 07:52:47

标签: php datetime

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

我现在需要将其更改为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中减去偏移量,抱歉,有点困惑。

3 个答案:

答案 0 :(得分:4)

也许您的网络服务器未在澳大利亚/悉尼时区设置? 以下答案将对您有所帮助: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');

答案 1 :(得分:3)

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

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

所有后续日期和时间函数请求都将使用America / Los Angeles作为时区。

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

答案 2 :(得分:1)

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