例如,我有这种格式的日期时间,它的UTC偏移量是+3:
2011-02-23 05:00:00
所以它的UTC时间实际上是:
2011-02-23 02:00:00
但是在PHP中进行这种转换的最简单方法是什么?
我曾考虑使用DateTimeZone
类,但正如您所看到的,我只有偏移而不是时区名称。要构造DateTimeZone
对象,需要时区名称。
如果没有使用DateTimeZone
类,可能会有更好的方法。
提前致谢。
答案 0 :(得分: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 :(得分: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()来获取时间戳。