假设我有一个这样的偏移量:
$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上,我可以根据它接受答案。
您应该使用DateTimeZone
和DateInterval
类:
$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
将该间隔转换为小时/分钟。