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

Calculate if DST active for a given timestamp and offset

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

我可以这样做:

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

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

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

欣赏任何想法。


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

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

1
2
3
4
5
$inputTime = $your_unix_timestamp;
$inputTZ = new DateTimeZone('Europe/London');

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

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


获取时区:

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

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

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

还原:

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

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