假设我有这样的偏移量:
$secOffset = -28800 我需要它以一种可用于MYSQL函数convert_tz()的格式进行转换。
如果我使用gmdate("h:i", secOffset),我得到的16:00几乎是正确的,但是它忽略了减号- (这很重要)
替代方法:
假设我有一个时间字符串America/Los_Angeles,并且我想转换一个对MYSQL函数convert_tz()有用的偏移量。
最后的预期输出是GMT的偏移量,因此给定一个时区。
对于ex,具有像America/Los_Angeles这样的时区,输出应该是:−08:00
我在Magento/Zend上,所以如果Zend上有可用的函数,我可以接受基于它的答案。
发布于 2014-07-01 11:46:16
为此,您应该使用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帮助将该间隔转换为小时/分钟。
https://stackoverflow.com/questions/24508375
复制相似问题