gpt4 book ai didi

php - 如何判断时区是否在一年中的任何时间遵守夏令时?

转载 作者:行者123 更新时间:2023-12-01 21:33:42 24 4
gpt4 key购买 nike

在 PHP 中,您可以使用如下方式判断给定日期是否在夏令时期间:

$isDST = date("I", $myDate); // 1 or 0

问题是,这只能告诉您该时间点是否处于夏令时。有没有可靠的方法来检查 DST 在该时区的任何时间是否生效?

<小时/>

编辑以澄清:

  • 澳大利亚布里斯类在一年中的任何时间都不实行夏令时。全年均为 GMT+10。
  • 澳大利亚悉尼从 10 月到 3 月从 GMT+10 更改为 GMT+11。

我想知道是否有一些现有的方法,或者一种实现这样的方法的方法:

timezoneDoesDST('Australia/Brisbane');  // false
timezoneDoesDST('Australia/Sydney'); // true

最佳答案

我找到了一种使用 PHP 的 DateTimezone 类 (PHP 5.2+) 的方法

function timezoneDoesDST($tzId) {
$tz = new DateTimeZone($tzId);
$trans = $tz->getTransitions();
return ((count($trans) && $trans[count($trans) - 1]['ts'] > time()));
}

或者,如果您运行的是 PHP 5.3+

function timezoneDoesDST($tzId) {
$tz = new DateTimeZone($tzId);
return count($tz->getTransitions(time())) > 0;
}

getTransitions()函数为您提供有关时区每次偏移量更改的信息。这包括历史数据(布里斯类在 1916 年实行夏令时......谁知道?),因此该函数检查 future 是否存在偏移量变化。

关于php - 如何判断时区是否在一年中的任何时间遵守夏令时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1586552/

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