给定UTC偏移量和日期时间,我们如何在PHP中找到它的UTC日期时间?
问题描述:
例如,我在这个格式及其UTC偏移有个约会时间是+3:给定UTC偏移量和日期时间,我们如何在PHP中找到它的UTC日期时间?
2011-02-23 05:00:00
所以它的UTC时间居然是:
2011-02-23 02:00:00
但是,什么是在PHP中做这种转换最简单的方法是什么?
我想过使用DateTimeZone
类,但正如你所看到的,我只有偏移量而不是时区名称。要构造一个DateTimeZone
对象,则需要时区名称。
也许有更好的方法,而不使用DateTimeZone
类。
在此先感谢。
答
只能根据偏移量修改日期。如果您有兴趣将此更改为其他时区,请使用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');
答
您可以使用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()单独获取时间戳。