1

给定一个相对于 UTC 的 unix 时间戳和时区偏移量(例如 -5),是否可以计算 DST 是否处于活动状态?

我可以做类似的事情:

<?php
  echo 'DST enabled? ' . date('I', 1345731453) ."<br>"; 
?>

但我看不到如何传递偏移量或时区。

鉴于特定国家/地区支持 DST,我还猜测时区和偏移量之间存在差异?

欣赏任何想法。

4

2 回答 2

1

正确,您需要从 date 和 tz 开始确定偏移量。

在 5.3+ 中,您可以获得开始/结束期间的转换,因此您可以对两者都使用时间戳,如下所示:

$inputTime = $your_unix_timestamp;
$inputTZ = new DateTimeZone('Europe/London'); 

$transitions = $inputTZ->getTransitions($inputTime,$inputTime); 
$offset = $transitions[0]['offset'];

$offset是相关时间的 DST 偏移量

于 2012-08-23T15:06:34.637 回答
0

获取时区:

$old_zone = ini_get('date.timezone');

将其更改为您想要的:

ini_set('date.timezone', 'Europe/Brussels');

还原:

ini_set('date.timezone', $old_zone);

PHP 时间戳始终为 UTC。根据您的时区设置,它确定显示的时间。

于 2012-08-23T15:05:33.340 回答