使用PHP将时区字符串转换为UTC偏移量



我有一个Wordpress市场商店,产品的"作者"将其时区以字符串格式存储在usermeta中,即Americas/Chicago

我想用UTC偏移量而不是字符串来输出每个用户的时区,这样我就可以更容易地操作它。我在下面的另一个堆栈溢出问题中得到了这个例子,但它在我的情况下不起作用。

$timezone = 'America/New_York'; //example string although I am getting the timezone from the database based on each users settings
if(!empty($timezone)) {
$UTC = new DateTimeZone("UTC");
$newTZ = new DateTimeZone($timezone);
$date = new DateTime( $newTZ );
$date->setTimezone( $UTC);
echo $date->format('H:i:s');
}

但是,此代码会打断页面。不明白为什么它会破坏页面。我把它放在一个单独的函数中,它仍然会崩溃,错误日志也没有多大帮助。

日志上写着:

DateTime->__construct(Object(DateTimeZone))

错误消息非常清楚:

致命错误:未捕获类型错误:DateTime::__construct()要求参数1为字符串,对象给定

时区是DateTime的第二个参数。因此,如果您想使用"now",请将"now"或null作为第一个参数。

$timezone = 'America/New_York'; //example string although I am getting the timezone from the database based on each users settings
if(!empty($timezone)) {
$UTC = new DateTimeZone("UTC");
$newTZ = new DateTimeZone($timezone);
$date = new DateTime(null, $newTZ );
$date->setTimezone( $UTC);
echo $date->format('H:i:s');
}

相关内容

  • 没有找到相关文章

最新更新