我在PHP工作。我想得到我的时区,亚洲/达卡,从偏移量6x60x60 = 21600。我试过用timezone_name_from_abbr("", 21600, false);,但它不起作用。我开始变假了。我现在能做什么?
发布于 2021-09-04 09:54:58
官方文档提到了该函数中的一个错误:abbr
您可以编写一个函数来解析timezone_abbreviations_list()的结果:
/* 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;
}它给出正确的结果:
$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);(
[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] =>
)https://stackoverflow.com/questions/69053215
复制相似问题