我开发了一个应用程序来记录修改和创建某些记录的时间,所以基本上我们使用time()
函数来记录保存更改的时间。
我在英国所以我的时区必须是GMT。然而在英国,我们使用夏令时,所以在夏天我们不再是格林威治标准时间,而是在BST。
如何更改使用BST的时区(GMT +1)。我想在我的php文件中声明它,以便它很容易更改。这就是我现在所拥有的:
date_default_timezone_set("UTC");
当我将其更改为:
date_default_timezone_set("BST");
我收到了一个php错误Timezone ID 'BST' is invalid
,当我将其更改为欧洲/伦敦时,它仍然保留为GMT而不是BST
答案 0 :(得分:7)
您要将时区设置为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 :(得分:1)
time()
函数返回一个unix时间戳,它始终基于UTC(与GMT相同)。对于BST或任何其他时区进行调整将无效。
还有其他功能可以处理本地时间,以及将unix时间戳转换为字符串以供显示。这是您使用Europe/London
时区的地方。
BST
无效,因为它可能代表“孟加拉国标准时间”或其他一些时区。一般来说,不要依赖时区缩写。