0

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

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

4

3 回答 3

4

也许您的网络服务器没有设置在澳大利亚/悉尼时区?以下答案将对您有所帮助:如何将 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');
于 2012-06-30T07:57:01.237 回答
3

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

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

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

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

于 2012-06-30T07:57:33.047 回答
1

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/>";
于 2012-06-30T08:20:27.847 回答