PHP 中两个日期之间的时间

问题描述 投票:0回答:1
<?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>';
?>

为什么我得零分?我想计算时差。

php datetime timezone
1个回答
0
投票

您的两个日期都是

now
,因此它们是相同的(您最多只能得到计算机运行这两个语句所需的一小部分时间)。特别是, DateTime::getTimestamp() 返回 Unix 时间,这是一个绝对时间(固定的时刻)。整个
DateTimeInterface
实现考虑了时区,因此将时间切换到不同的时区不会使其成为不同的(绝对)时间。

要计算两个当地时间之间的差异,您可以减去时区偏移量:

dump($UTC->getOffset(), $date_time_now->getOffset(), $UTC->getOffset() - $date_time_now->getOffset());
© www.soinside.com 2019 - 2024. All rights reserved.