protected static function _getTransitions(DateTimeZone $timezone, Horde_Date $date)
{
$std = $dst = array();
$transitions = $timezone->getTransitions(mktime(0, 0, 0, 12, 1, $date->year - 1), mktime(24, 0, 0, 12, 31, $date->year));
if ($transitions === false) {
return array();
}
foreach ($transitions as $i => $transition) {
try {
$d = new Horde_Date($transition['time']);
$d->setTimezone('UTC');
} catch (Exception $e) {
continue;
}
if ($d->format('Y') == $date->format('Y') && isset($transitions[$i + 1])) {
$next = new Horde_Date($transitions[$i + 1]['ts']);
if ($d->format('Y') == $next->format('Y')) {
$dst = $transition['isdst'] ? $transition : $transitions[$i + 1];
$std = $transition['isdst'] ? $transitions[$i + 1] : $transition;
} else {
$dst = $transition['isdst'] ? $transition : null;
$std = $transition['isdst'] ? null : $transition;
}
break;
} elseif ($i == count($transitions) - 1) {
$std = $transition;
}
}
return array($std, $dst);
}