【问题标题】:PHP timezone issue | BST and GMTPHP 时区问题 |英国夏令时和格林威治标准时间
【发布时间】:2015-08-09 06:30:05
【问题描述】:

我开发了一个应用程序,它记录某些记录何时被修改和创建,所以基本上我们使用time() 函数来记录何时保存更改。

我在英国,所以我的时区必须是 GMT。但是在英国,我们使用 DST,所以在夏天我们不再使用 GMT,而是使用 BST。

如何更改时区以使用 BST(即 GMT +1)。我想在我的 php 文件中声明它,以便轻松更改它。这是我目前拥有的:

date_default_timezone_set("UTC");

当我将其更改为:

date_default_timezone_set("BST");

我收到一个 php 错误 Timezone ID 'BST' is invalid,当我将其更改为欧洲/伦敦时,它仍然保持为 GMT 而不是 BST

【问题讨论】:

  • 那么 date_default_timezone_set('Etc/GMT-1');

标签: php timezone utc gmt


【解决方案1】:

您将时区设置为Europe/London,它会在适当的日期在 GMT 和 BST 之间自动转换。时区包括这些信息,这基本上是时区的点(在 PHP 意义上)。

PHP 手册很方便地包含了 this as a sample:

$timezone = new DateTimeZone("Europe/London");
$transitions = $timezone->getTransitions();
print_r(array_slice($transitions, 0, 3));

Array
(
    [0] => Array
        (
            [ts] => -9223372036854775808
            [time] => -292277022657-01-27T08:29:52+0000
            [offset] => 3600
            [isdst] => 1
            [abbr] => BST
        )

    [1] => Array
        (
            [ts] => -1691964000
            [time] => 1916-05-21T02:00:00+0000
            [offset] => 3600
            [isdst] => 1
            [abbr] => BST
        )

    [2] => Array
        (
            [ts] => -1680472800
            [time] => 1916-10-01T02:00:00+0000
            [offset] => 0
            [isdst] => 
            [abbr] => GMT
        )

)

【讨论】:

  • 如前所述,我已将其更改为欧洲/伦敦,但它仍在使用 GMT 而不是 BST(晚一小时)
  • 那么你可能需要update your timezone db。如果它已经过时并且现实世界中的时区定义发生了变化,那么您的 PHP 将没有此信息。
  • 您能否了解一下我应该将这些文件插入时区数据库中的哪个位置?谢谢
  • stackoverflow.com/questions/3564478/…。您应该使用 PECL 来更新 timezonedb 扩展。 但是,根据您安装 PHP 的方式,可能会有更好的方法。例如,您可能应该使用安装 PHP 的包管理器来全面更新您的 PHP 版本。这太宽泛了,无法在评论中正确回答。
  • 在很长一段时间内Europe/London 没有任何改变。
【解决方案2】:

time() 函数返回一个 unix 时间戳,该时间戳始终基于 UTC(与 GMT 相同)。为 BST 或任何其他时区调整它是无效的。

还有其他函数用于处理本地时间,以及将 unix 时间戳转换为字符串以进行显示。那是您使用Europe/London 时区的地方。

BST 无效,因为它可能代表“孟加拉国标准时间”或其他几个时区。一般来说,不要依赖时区缩写。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-13
    • 2013-11-09
    • 1970-01-01
    • 2011-10-30
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    相关资源
    最近更新 更多