<?php
$timezone='Asia/Tokyo';
$date_time_now = new DateTime('now', new DateTimeZone($timezone));
$date_time_now_formatted = $date_time_now->format('Y-m-d H:i:s');
echo $date_time_now_formatted . '<br>';
$UTC = new DateTime('now', new DateTimeZone('UTC'));
$UTC_formatted = $UTC->format('Y-m-d H:i:s');
echo $UTC_formatted . '<br>';
$difference_seconds = $date_time_now->getTimestamp() - $UTC->getTimestamp();
echo $difference_seconds . ' <br>';
?>
为什么我得零分?我想计算时差。
您的两个日期都是
now
,因此它们是相同的(您最多只能得到计算机运行这两个语句所需的一小部分时间)。特别是, DateTime::getTimestamp() 返回 Unix 时间,这是一个绝对时间(固定的时刻)。整个 DateTimeInterface
实现考虑了时区,因此将时间切换到不同的时区不会使其成为不同的(绝对)时间。
要计算两个当地时间之间的差异,您可以减去时区偏移量:
dump($UTC->getOffset(), $date_time_now->getOffset(), $UTC->getOffset() - $date_time_now->getOffset());