首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将时区偏移量转换为小时&分钟保持标志

问将时区偏移量转换为小时&分钟保持标志
EN

Stack Overflow用户
提问于 2014-07-01 10:47:33
回答 1查看 1.9K关注 0票数 2

假设我有这样的偏移量:

代码语言:javascript
复制
$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上有可用的函数,我可以接受基于它的答案。

EN

回答 1

Stack Overflow用户

发布于 2014-07-01 11:46:16

为此,您应该使用DateTimeZone和DateInterval类:

代码语言:javascript
复制
$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帮助将该间隔转换为小时/分钟。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24508375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档