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

Php 为什么本地时间戳等于UTC时间戳?,php,timezone,utc,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'));

如果
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时间戳?

因为时间戳是Unix纪元(1970年1月1日00:00:00 GMT)之后的秒数。注意格林尼治标准时间?无论您处于哪个时区,时间戳都是相对于该时区的

你真正想做的是:

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

因为时间戳是Unix纪元(1970年1月1日00:00:00 GMT)之后的秒数。注意格林尼治标准时间?无论您处于哪个时区,时间戳都是相对于该时区的

你真正想做的是:

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

时间戳始终以UTC为单位。格式化日期根据时区设置进行本地化。时间戳始终以UTC为单位。格式化日期根据时区设置进行本地化。您的意思是$gmt->setTimeZone(新日期时区('UTC'))?对谢谢你,谢谢你的帮助!有道理为什么没有
gmtime()
你是说$gmt->setTimeZone(newdatetimezone('UTC')?对谢谢你,谢谢你的帮助!为什么没有
gmtime()