在 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;
}
The getTransitions() http://php.net/manual/en/datetimezone.gettransitions.php函数为您提供有关时区每次偏移量更改的信息。这包括历史数据(布里斯班在 1916 年实行夏令时……谁知道呢?),所以这个函数检查未来是否有偏移量变化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)