2011-02-23 124 views
1

例如,我在这个格式及其UTC偏移有个约会时间是+3:给定UTC偏移量和日期时间,我们如何在PHP中找到它的UTC日期时间?

2011-02-23 05:00:00

所以它的UTC时间居然是:

2011-02-23 02:00:00

但是,什么是在PHP中做这种转换最简单的方法是什么?

我想过使用DateTimeZone类,但正如你所看到的,我只有偏移量而不是时区名称。要构造一个DateTimeZone对象,则需要时区名称。

也许有更好的方法,而不使用DateTimeZone类。

在此先感谢。

回答

2

只能根据偏移量修改日期。如果您有兴趣将此更改为其他时区,请使用UTC时区创建日期。

$date = new DateTime('2011-02-23 05:00:00', new DateTimeZone('UTC')); 
$date->modify(sprintf('%s%d hours', $offset < 0 ? '+' : '-', $offset)); 

注:这甚至会工作,如果偏移量是一个字符串。即“-3”或“+3”

然后例如,如果你想在澳大利亚墨尔本看到那段时间。

$date->setTimezone(new DateTimeZone('Australia/Melbourne')); 
echo $date->format('c'); 
1

您可以使用date()和strtotime()。

$in = "2011-02-23 05:00:00"; 
$offset = "-3 hours"; 
$out = date('Y-m-d H:i:s',strtotime("$in $offset")); 

这也很好,值得注意的是,有了这个,你不受限于你抵消什么。 strtotime()函数可以让你做各种精彩的事情,比如“-2周+3天...”等。

你也可以从date()中获取任何日期格式,或者只是使用strtotime()单独获取时间戳。

相关问题