繁体   English   中英

给定UTC偏移量和日期时间,我们如何在PHP中找到其UTC日期时间?

[英]Given an UTC offset and a date time, how can we find its UTC date time in PHP?

例如,我有一个采用这种格式的日期时间,其UTC偏移为+3:

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()来获取时间戳。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM