不同的时区有相同的时间戳?

I ran this script:

echo date_default_timezone_get()."
";
echo "----
";

date_default_timezone_set('Asia/Kabul');
echo date_default_timezone_get()."
";
echo "----
";

echo time()."
";
$dt = new DateTime;
echo $dt->format('U') . "
";
echo "----
";

date_default_timezone_set('UTC');
echo date_default_timezone_get()."
";
echo "----
";

echo time()."
";
$dt = new DateTime;
echo $dt->format('U') . "
";

and for all the 4 timestamp values, it says: 1325905766.

I read somewhere that new DateTime always sets UTC as timezone, whatever the timezone setting, so I get that, but what about time()?

A few seconds before, on a different server (probably not in Europe (ideone.com)), it returns 4 times: 1325905723.

That's the same! (A few seconds diff obviously, but the same timezone.)

time() always and only returns UTC??? What's going on??

Yes, they both use UTC. Specifically, both time() and the U format return the number of non-leap seconds elapsed since midnight UTC on January 1, 1970 (the "Unix epoch"). As the epoch is a fixed point whose definition is independent of the user's timezone, and as the number of seconds since then is the same in all time zones (ignoring relativistic effects and whatnot), time() returns the same value regardless of time zone settings.

time() returns the number of seconds since January 1st, 1970 00:00:00 GMT.

The number of seconds elapsed since that particular point in time is the same whether you are in Asia/Kabul or Hither/Yon.