首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在php中从GMT+0获取时区偏移量?

如何在php中从GMT+0获取时区偏移量?
EN

Stack Overflow用户
提问于 2012-02-04 20:14:45
回答 5查看 31.8K关注 0票数 17

我不是php方面的专家。我知道在PHP中时区是supported

对于PHP支持的给定时区TZ,我需要检索一个已知UTC (即GMT+0)的偏移量(即添加或减去的小时数和分钟数),以获得TZ区的时间。

我如何才能做到这一点?最终,我需要获取PHP中所有受支持时区的偏移量。谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-02-04 20:27:29

这是一个简单的示例,如何获取时区偏移量(秒):

代码语言:javascript
复制
$dtz = new DateTimeZone('Europe/Sofia');
$time_in_sofia = new DateTime('now', $dtz);
echo $dtz->getOffset( $time_in_sofia );

要以GMT+x格式显示,请执行以下操作:

代码语言:javascript
复制
$offset = $dtz->getOffset( $time_in_sofia ) / 3600;
echo "GMT" . ($offset < 0 ? $offset : "+".$offset);

working example

票数 24
EN

Stack Overflow用户

发布于 2014-01-09 18:44:31

这对于将偏移值转换为GMT格式而不进行任何计算非常有用

代码语言:javascript
复制
<?php

  //target time zone
  $target_time_zone = new DateTimeZone('America/Los_Angeles');

  //find kolkata time 
  $date_time = new DateTime('now', $target_time_zone);

  //get the exact GMT format
  echo 'GMT '.$date_time->format('P');
票数 26
EN

Stack Overflow用户

发布于 2012-11-03 11:31:08

这将为您提供标准偏移量(不是中的偏移量,也不是 of 中的偏移量,具体取决于一年中的时间):

代码语言:javascript
复制
function getStandardOffsetUTC($timezone)
{
    if($timezone == 'UTC') {
        return '';
    } else {
        $timezone = new DateTimeZone($timezone);
        $transitions = $timezone->getTransitions(time() - 86400*365, time());

        foreach ($transitions as $transition)
        {
            if ($transition['isdst'])
            {
                continue;
            }

            return sprintf('UTC %+03d:%02u', $transition['offset'] / 3600, abs($transition['offset']) % 3600 / 60);
        }

        return false;
    }
}

用法:

代码语言:javascript
复制
echo getStandardOffsetUTC('Europe/Sofia'); // UTC +02:00

您可以查看differences here

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

https://stackoverflow.com/questions/9140765

复制
相关文章

相似问题

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