Personally I prefer not changing default timezone
$tz = new DateTimeZone('Europe/London');
# 0 hour diff from UTC => no daylight savings
$secondsFromUTC = $tz->getOffset(new DateTime('2011-01-01 14:00'));
echo $secondsFromUTC / 3600 . '<br/>';
# 1 hour diff from UTC => daylight savings
$secondsFromUTC = $tz->getOffset(new DateTime());
echo $secondsFromUTC / 3600;
And using DateTime and DateTimeZone, you don't even have to check if a place currently uses DST or not. As you can see, the conversion is automatic (in this example, conversion from a place with DST to one in the same timezone but without DST.
$el = new DateTimeZone('Europe/London');
$an = new DateTimeZone('Africa/Bamako');
$dt = new DateTime('now', $el);
printf('London (now - summer time): %s<br/>', $dt->format('H:i:s'));
$dt->setTimeZone($an);
printf('Bamako equivalent: %s<br/>', $dt->format('H:i:s'));
$dt = new DateTime('2011-01-01 11:00', $el);
printf('London (jan 01, 11:00): %s<br/>', $dt->format('H:i:s'));
$dt->setTimeZone($an);
printf('Bamako (equivalent): %s<br/>', $dt->format('H:i:s'));