首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >timezone_name_from_abbr不适用于php

timezone_name_from_abbr不适用于php
EN

Stack Overflow用户
提问于 2021-09-04 07:22:20
回答 1查看 68关注 0票数 1

我在PHP工作。我想得到我的时区,亚洲/达卡,从偏移量6x60x60 = 21600。我试过用timezone_name_from_abbr("", 21600, false);,但它不起作用。我开始变假了。我现在能做什么?

EN

回答 1

Stack Overflow用户

发布于 2021-09-04 09:54:58

官方文档提到了该函数中的一个错误:abbr

您可以编写一个函数来解析timezone_abbreviations_list()的结果:

代码语言:javascript
复制
/* Takes a GMT offset and returns a timezone name */
function tz_offset_to_name($offset, $dst)
{
    $results = array();
    
    $abbrarray = timezone_abbreviations_list();
    foreach ($abbrarray as $abbr)
    {
        foreach ($abbr as $city)
        {
             if ($city['offset'] == $offset and $city['dst'] == $dst)
             {
                 $results[] = $city['timezone_id'];
             }
        }
    }

    return $results;
}

它给出正确的结果:

代码语言:javascript
复制
$offset = 6*60*60 ;
$tz = timezone_name_from_abbr("", $offset, false);
var_dump($tz); // false

$tz = tz_offset_to_name($offset, false);
print_r($tz);
代码语言:javascript
复制
(
    [0] => Asia/Aqtobe
    [1] => Asia/Almaty
    [2] => Asia/Dacca
    [3] => Asia/Dhaka
    [4] => Asia/Thimbu
    [5] => Asia/Thimphu
    [6] => Asia/Dacca
    [7] => Asia/Dhaka
    [8] => Asia/Dushanbe
    [9] => Asia/Bishkek
    [10] => Asia/Hovd
    [11] => Indian/Chagos
    [12] => Asia/Bishkek
    [13] => Asia/Qyzylorda
    [14] => Asia/Krasnoyarsk
    [15] => Asia/Novokuznetsk
    [16] => Asia/Colombo
    [17] => Antarctica/Mawson
    [18] => Asia/Novosibirsk
    [19] => Asia/Novokuznetsk
    [20] => Asia/Omsk
    [21] => Asia/Qyzylorda
    [22] => Asia/Aqtau
    [23] => Asia/Samarkand
    [24] => Asia/Tashkent
    [25] => Asia/Oral
    [26] => Antarctica/Vostok
    [27] => Asia/Kashgar
    [28] => Asia/Urumqi
    [29] => Asia/Yekaterinburg
    [30] => 
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69053215

复制
相关文章

相似问题

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