带时区的PHP日期时间

问题描述:

我有问题。我尝试在php中使用datetime。 我所做的:带时区的PHP日期时间

$now = new \DateTime(); 

当我的print_r的$now我:

DateTime Object 
(
    [date] => 2016-12-01 05:55:01 
    [timezone_type] => 3 
    [timezone] => Europe/Helsinki 
) 

当我看着时钟我16:05。我需要设置时区?我想使用布加勒斯特时区。我如何才能获得正确的日期和时间? THX提前

+0

检查我的答案,在这里你将得到2种方式如何得到正确的时间。 –

,就把这行的脚本上面的代码:

date_default_timezone_set('Europe/Bucharest'); 

examples in the manual,您可以设置时区的DateTime类的这样的

$now = new \DateTime('now', new DateTimeZone('Europe/Bucharest')); 
+0

我有这样的:'DateTime对象 ( [日期] => 2016年12月1日6点09分43秒 [timezone_type] => 3 [时区] =>欧/布加勒斯特 ) ' –

+0

但小时现在是'16:22' –

+0

在布加勒斯特的时间是16:22 @ UTC 14:22 – RiggsFolly

你可以实例化使用setTimezone()方法DateTime类设置时区为欧洲/布加勒斯特,如下所示:

$now = new \DateTime(); 
$now->setTimezone(new DateTimeZone('Europe/Bucharest')); 

这里的参考:

有两种方法来设置正确的时区。这是对象方式和程序方式。


实例

对象

$datetime = new DateTime(); 
$timezone = new DateTimeZone('Europe/Bucharest'); 
$datetime->setTimezone($timezone); 
echo $datetime->format('F d, Y H:i'); 

程序

date_default_timezone_set("Europe/Bucharest"); 
$date = date('F d, Y H:i'); 
echo $date; 

手册


更新

下面

校验码,可它会为你工作:

<?php 
date_default_timezone_set('Europe/London'); 
$datetime = new DateTime(); 
$timezone = new DateTimeZone('Europe/Bucharest'); 
$datetime->setTimezone($timezone); 
echo $datetime->format('F d, Y H:i'); 
?> 
+0

我没有得到正确的时间 –

+0

它给''December 01, 2016年16:35',现在是时候在布加勒斯特。 –

+0

我得到'2016年12月01日06:25 ' –