首页 文章

PHP时区问题| BST和GMT

提问于
浏览
4

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

我在英国,所以我的时区必须是GMT . 然而在英国,我们使用夏令时,所以在夏天我们不再使用GMT而是使用BST .

如何更改使用BST的时区(GMT 1) . 我想在我的php文件中声明它,以便它很容易更改 . 这就是我现在所拥有的:

date_default_timezone_set("UTC");

When I change it to:

date_default_timezone_set("BST");

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

2 回答

  • 6

    您将时区设置为 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
            )
    
    )
    
  • 1

    time() 函数返回一个unix时间戳,它始终基于UTC(与GMT相同) . 对于BST或任何其他时区进行调整将无效 .

    还有其他功能可以处理本地时间,以及将unix时间戳转换为字符串以进行显示 . 这是您使用 Europe/London 时区的地方 .

    BST 无效,因为它可能代表"Bangladesh Standard Time"或其他一些时区 . 一般来说,不要依赖时区缩写 .

相关问题