将时区偏移量转换为小时和分钟保留符号



假设我有一个这样的偏移量:

$secOffset =  -28800 

我需要它转换的格式是可用的MYSQL函数convert_tz()

如果我用gmdate("h:i", secOffset),我得到16:00,这几乎是正确的,但它错过了- -(这是非常重要的)

替代方法:

假设我有一个时间字符串America/Los_Angeles,我想转换一个对MYSQL函数convert_tz()有用的偏移

期望的最终输出是给定时区与GMT的偏移量。
例如,有一个像America/Los_Angeles这样的时区,输出应该是:−08:00

我在Magento/Zend上,所以如果有任何可用的功能在Zend上,我可以根据它接受答案。

您应该使用DateTimeZoneDateInterval类:

$tzid = 'America/Los_Angeles';
$tz = new DateTimeZone($tzid);
$date = new DateTime('now', $tz);
// create a new date offset by the timezone offset
// gets the interval as hours & minutes
$offset = $tz->getOffset($date) . ' seconds';
$dateOffset = clone $date;
$dateOffset->sub(DateInterval::createFromDateString($offset));
$interval = $dateOffset->diff($date);
$formatted = $interval->format('%R%H:%I');

这有点复杂,因为您首先以秒为单位获取时区偏移量,然后使用DateTime将该间隔转换为小时/分钟。

相关内容

  • 没有找到相关文章