计算DST是否对给定的时间戳和偏移有效

时间:2012-08-23 14:53:21

标签: php timezone dst

给定相对于UTC的unix时间戳和时区偏移量(例如-5),是否可以计算DST是否有效?

我可以做类似的事情:

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

但是我看不到如何传递偏移量或TimeZone。

我还猜测时区和偏移之间存在差异,因为特定国家支持DST?

欣赏任何想法。

2 个答案:

答案 0 :(得分: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偏移量

答案 1 :(得分:0)

获取时区:

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

将其更改为您想要的那个:

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

还原:

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

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