在 PHP 中显示 GMT 偏移量

Posted

技术标签:

【中文标题】在 PHP 中显示 GMT 偏移量【英文标题】:Show GMT Offset in PHP 【发布时间】:2016-01-02 22:23:12 【问题描述】:

我有一个来自https://timezonedb.com/download的时区数据库

查询的每个时区行都有一个 time_start 字段和另一个名为 gmt_offset 的字段

例如,一行是

        [zone_id] => 191
        [zone_name] => Asia/Kolkata
        [country_name] => India
        [time_start] => -891582800
        [gmt_offset] => 23400
        [dst] => 0

我需要通过 php 显示国家和 GMT 偏移量

India: GMT +5:30

我试过了

            $plusoffset = $row->time_start+$row->gmt_offset;
            $minusoffset = $row->time_start-$row->gmt_offset;
            echo "Time Start: ". date('h:i:s',$row->time_start).'<br>';
            echo "Offset: ". date('h:i:s',$row->gmt_offset).'<br>';
            echo "Start+Offset: ". date('h:i:s',$plusoffset).'<br>';
            echo "Start-Offset: ". date('h:i:s',$minusoffset).'<br>';

但这些都没有显示正确的偏移量。

我确定我遗漏了一些非常明显的东西,但我终其一生都无法弄清楚。

【问题讨论】:

【参考方案1】:

只需将您到达那里的秒数 (23400) 转换为小时和分钟...

$gmt_offset = 23400;

$hours = (int)($gmt_offset / 3600);
$minutes = $gmt_offset % 3600 / 60;
echo 'Offset: ' . $hours . ':' . $minutes;

【讨论】:

它仍然显示多出一小时。例如。而不是显示 5:30,而是显示 6:30。 23400 肯定是 6.5 小时(你可以除以 3600 看看自己)你应该问一下为什么是 23400。

以上是关于在 PHP 中显示 GMT 偏移量的主要内容,如果未能解决你的问题,请参考以下文章

使用时区偏移量而不是时区标识符将 GMT 时间转换为本地时间

在python中获取给定日期和UTC偏移量的GMT时间

如何在 MySQL 服务器中使用 DATETIME 存储 GMT 偏移量

使用偏移量计算 JavaScript 日期时间

在 MySQL 中计算时区的偏移量

使用本地时区在 Python 中获取正确的时区偏移量