私はこの質問が非常に古いことを知っていますが、助けになる別の選択肢が見つかりました。
PHPのタイムゾーンを設定して元に戻す代わりに、次のようにstrtotimeに渡す文字列の一部としてタイムゾーンを指定することができます:
echo date_default_timezone_get();
output: America/Chicago
echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39'));
output: 2011-10-28 01:23:39
echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 America/Chicago'));
output: 2011-10-28 01:23:39
echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 UTC'));
output 2011-10-27 20:23:39
注:私はPHP 5.5.9を使用していますが、これはどのPHPバージョンでも動作します。