gpt4 book ai didi

PHP - timezone_name_from_abbr 显示错误的时区

转载 作者:行者123 更新时间:2023-11-29 11:34:00 25 4
gpt4 key购买 nike

对于我用 PHP 构建的在线社区,我需要将默认时区设置为用户的时区。这是我现在的代码,它根据一些 JS 返回用户的时区偏移量:

$timezone = $_SESSION['time'];
$timezone_offset = filter_var($timezone, FILTER_SANITIZE_NUMBER_INT);

该脚本将时区偏移量放入 session 中,然后将该 session 分配给 $timezone 变量。当我 echo $timezone 时,我得到“GMT 2”,这是正确的,所以我确保我只得到数字 2 在以下代码中使用来获取和设置时区:

$timezoneName = timezone_name_from_abbr("", $timezone_offset*3600, false);
date_default_timezone_set($timezoneName);

虽然 $timezone 变量显示了我所在位置的正确时区偏移:GMT +2(我在比利时布鲁塞尔),但当我使用 date_default_timezone_get()< 回显我的默认时区时,我仍然得到错误的时区,即 Europe/Helsinki,其偏移量为 GMT +3,而不是 GMT +2。

有谁知道可能导致此问题的原因以及如何修复它,以便它显示正确的时区:欧洲/布鲁塞尔或欧洲/巴黎。

最佳答案

“GMT +2”并不是“欧洲/布鲁塞尔”的准确时区:由于夏令时,它是实际时区。 “欧洲/布鲁塞尔”的标准时区是“GMT +1”。

因此,要获得正确的日期,您必须将 $_SESSION['time'] 设置为“GMT +1”或“CET”(中欧时间):通过这种方式,您全年都会有合适的时间。

但是,最好的方法是直接指定“欧洲/布鲁塞尔”,因为每个国家/地区的 DST 设置可能会发生变化(实际上,CET DST 规则是由欧盟审议的)。

关于PHP - timezone_name_from_abbr 显示错误的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36922781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com