如果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时间戳?
答案 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);