假设我有这样的偏移量:
$secOffset = -28800
我需要它以可用于MYSQL函数convert_tz()
如果我使用gmdate("h:i", secOffset)
我的16:00
几乎是正确的,但它会错过减号-
(这非常重要)
替代方法:
假设我有一个时间字符串America/Los_Angeles
,我想转换一个对MYSQL函数有用的偏移量convert_tz()
最终的预期输出是格林尼治标准时间的偏差,所以给定时区
例如,拥有像America/Los_Angeles
这样的时区,输出应为:
−08:00
我在使用Magento / Zend,所以如果Zend上有任何可用的功能,我可以接受基于它的答案。
答案 0 :(得分:1)
您应该使用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
来帮助将该时间间隔转换为小时/分钟。