php strtotime拼图 - 夏令时?

PHP CODE

$t = strtotime( '2012-09-21T03:00:00+00:00 America/Chicago' );
$t2 =  date('c',$t);
echo $t2; 

OUPUT

 2012-09-20T23:00:00-04:00

QUESTION

Chicago's timezone is UTC-5, why don't I get 2012-09-20T22:00:00-05:00 as the result?

strtotime converts to a Unix timestamp. date will convert the timestamp to a string using the current time zone. Try setting your time zone first.

$t = strtotime( '2012-09-21T03:00:00+00:00 America/Chicago' );
date_default_timezone_set('America/Chicago');
$t2 =  date('c',$t);
echo $t2;

This doesn't really answer my question, but I did the following to fix it:

date_default_timezone_set('America/Chicago');
$t = strtotime( '2012-09-21T03:00:00+00:00' );
$t2 =  date('c',$t);
echo $t2;

Output: 2012-09-20T22:00:00-05:00