【问题标题】:In PHP, how do you get the text offset of a timezone在 PHP 中,如何获取时区的文本偏移量
【发布时间】:2015-11-10 17:50:49
【问题描述】:

如何获得时区偏移文本?例如,如果我传入:

America/New_York

...我想收到回复:

-04:00

【问题讨论】:

  • 我相信这个问题和我在研究后提供的答案(在答案中找到)被否决了,因为它不符合在 downvote 按钮提示中找到的这个标准:“这个问题不显示任何研究努力;不清楚或无用”。具有讽刺意味的是,这是我更喜欢的问题/答案。简短,清晰,直截了当,没有被一堆废话弄糊涂,展示了我们经常发现的 OP 的不成功尝试(请注意,这不是不合适的)。有趣的是,它符合 SO 声明目的的标准:meta.stackexchange.com/a/28857。尤其是“快”

标签: php timezone timezone-offset


【解决方案1】:

我创建了一个名为 getTimezoneOffsetText 的函数

<?php
    function getTimezoneOffsetText($timezone){
        date_default_timezone_set( "UTC" );
        $daylight_savings_offset_in_seconds = timezone_offset_get(timezone_open($timezone), new DateTime());
        $mod = $daylight_savings_offset_in_seconds/60 % 60;
        $min = abs($mod);

        return sprintf('%+03d', $daylight_savings_offset_in_seconds/60/60) . ':' . sprintf('%02d', $min);
}

$offset1 = 'America/New_York';
$offset2 = 'Asia/Kabul';
$offset3 = 'Asia/Kathmandu';
$offset4 = 'Israel';
$offset5 = 'Greenwich';
$offset6 = 'America/Caracas';

echo '<pre>';
echo $offset1 . ":\t" . getTimezoneOffsetText($offset1) . '<br/>';
echo $offset2 . ":\t\t" . getTimezoneOffsetText($offset2) . '<br/>';
echo $offset3 . ":\t\t" . getTimezoneOffsetText($offset3) . '<br/>';
echo $offset4 . ":\t\t\t" . getTimezoneOffsetText($offset4) . '<br/>';
echo $offset5 . ":\t\t" . getTimezoneOffsetText($offset5) . '<br/>';
echo $offset6 . ":\t" . getTimezoneOffsetText($offset6) . '<br/>';
echo '</pre>';

它生成这个数据:

America/Caracas:    -04:30
Asia/Kabul:         +04:30
Asia/Kathmandu:     +05:45
Israel:             +03:00
Greenwich:          +00:00
America/New_York:   -04:00

请注意,它有半小时和其他“非标准”时区,例如加拉加斯、喀布尔和加德满都。我很好奇是否已经存在完成此任务的函数。

【讨论】:

  • 这是您问题的一部分吗?还是答案?
猜你喜欢
  • 2017-03-14
  • 1970-01-01
  • 2013-01-13
  • 2016-01-06
  • 1970-01-01
  • 2012-08-14
  • 2021-04-11
  • 1970-01-01
  • 2018-09-11
相关资源
最近更新 更多