No, don't use date_default_timezone_set()
for timezone conversions. This can have unintended side-effects.
Instead, use this:
$tz = new DateTimeZone('America/Los_Angeles');
$date = new DateTime('Thu, 31 Mar 2011 02:05:59 GMT');
$date->setTimeZone($tz);
echo $date->format('l F j Y g:i:s A I')."\n";
Note, you're creating the DateTime object using UTC time and then applying the timezone. This way is much cleaner.