- date_default_timezone_set: documentation ( source)
- range: documentation ( source)
<?php
date_default_timezone_set('America/New_York');
//DST starts Apr. 2nd 01:00 and moves to 03:00
$start = new \DateTime('2006-04-02T01:00:00');
$end = new \DateTime('2006-04-02T04:00:00');
while($end > $start) {
$now = clone $end;
$end->sub(new \DateInterval('PT1H'));
echo $end->format('Y-m-d H:i T') . PHP_EOL;
if ($now == $end) {
break; //remove this will result in an endless loop
}
}
echo '-----' . \PHP_EOL;
//DST ends Oct. 29th 02:00 and moves to 01:00
$date = new DateTime('2006-10-29T00:30:00');
foreach(range(1,4) as $i) {
$date->add(new DateInterval('PT30M'));
echo $date->format('Y-m-d H:i T'). PHP_EOL;
}