2012-06-30 71 views
0

我有一个字符串,其中包含日期/时间,我知道它目前在澳大利亚/悉尼时区。更改悉尼日期格林威治标准时间到PHP

我现在需要将其更改为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

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

在脚本中使用的ini_set()设置当前时区到如那是在洛杉矶所用的时区,你可以这样做:

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

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

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

+0

没错工作:) THX – user1067698

相关问题