我有一个字符串,其中包含日期/时间,我知道它目前在澳大利亚/悉尼时区。
我现在需要将其更改为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中减去偏移量,抱歉,有点困惑。
答案 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/>";