给定一个相对于 UTC 的 unix 时间戳和时区偏移量(例如 -5),是否可以计算 DST 是否处于活动状态?
我可以做类似的事情:
<?php
echo 'DST enabled? ' . date('I', 1345731453) ."<br>";
?>
但我看不到如何传递偏移量或时区。
鉴于特定国家/地区支持 DST,我还猜测时区和偏移量之间存在差异?
欣赏任何想法。
正确,您需要从 date 和 tz 开始确定偏移量。
在 5.3+ 中,您可以获得开始/结束期间的转换,因此您可以对两者都使用时间戳,如下所示:
$inputTime = $your_unix_timestamp;
$inputTZ = new DateTimeZone('Europe/London');
$transitions = $inputTZ->getTransitions($inputTime,$inputTime);
$offset = $transitions[0]['offset'];
$offset
是相关时间的 DST 偏移量
获取时区:
$old_zone = ini_get('date.timezone');
将其更改为您想要的:
ini_set('date.timezone', 'Europe/Brussels');
还原:
ini_set('date.timezone', $old_zone);
PHP 时间戳始终为 UTC。根据您的时区设置,它确定显示的时间。