time()
возвращает метку времени Unix, а метка времени Unix - это фиксированный период времени: количество секунд с начала эпохи Unix. Это не зависит от часовых поясов.
Когда у вас есть точный момент, вы можете рассчитать местное время в данном месте:
<?php
$now = time();
echo $now . PHP_EOL;
date_default_timezone_set('Europe/Madrid');
echo date('r', $now) . PHP_EOL;
date_default_timezone_set('Asia/Tokyo');
echo date('r', $now) . PHP_EOL;
... напечатает разные локальные даты для одной и той же отметки времени:
1313683738
Thu, 18 Aug 2011 18:08:58 +0200
Fri, 19 Aug 2011 01:08:58 +0900
То же самое относится и к противоположной операции:
<?php
date_default_timezone_set('Europe/Madrid');
$then = mktime(23, 55, 30, 12, 31, 2000);
echo $then . PHP_EOL;
date_default_timezone_set('Asia/Tokyo');
$then = mktime(23, 55, 30, 12, 31, 2000);
echo $then . PHP_EOL;
... напечатает разные метки времени:
978303330
978274530