[英]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.