为什么本地时间戳等于UTC时间戳?

时间:2013-03-22 01:55:00

标签: php timezone utc

如果date()格式化当地时间/日期,而gmdate()格式化GMT / UTC日期/时间,为什么会这样?

date_default_timezone_set('America/Los_Angeles');
var_dump(date('U') === gmdate('U')); // true

在命令行上:

$ php -r "date_default_timezone_set('America/Los_Angeles'); var_dump(date('U') === gmdate('U'));"
bool(true)

为什么本地时间戳等于不同时区的UTC时间戳?

1 个答案:

答案 0 :(得分:4)

因为时间戳是自Unix Epoch(1970年1月1日00:00:00 GMT)以来的秒数。注意GMT?无论您在哪个时区,时间戳都与该时间和时区相关。

你真正想做的是:

$local = new DateTime();
$local->setTimeZone(new DateTimeZone('America/Los_Angeles'));
$gmt   = new DateTime();
$gmt->setTimeZone(new DateTimeZone('UTC'));
var_dump($local === $gmt);