PhP日期和时间分离、加法和计算

PhP Date and Time separation, addition and calculation

另一个日期时间问题。

我有时会很忙,比如 -> “2021-02-24 12:00:00”(字符串)

我有这样的当前日期 -> date('Y-m-d h:i:s') (string)

我需要计算两者之间经过了多少小时:分钟:秒。例如(忙于)2021-02-14 15:00:00 当前时间是 2021-02-14 16:15:00 所以我需要显示类似的内容:01:15:00.

但是如果超过 99 小时怎么办,我该如何让它看起来像这样 -> 120:02:36.

我昨天问的问题不够具体所以我在这里得到了一些答案: (我知道这是我的错)

但最后我不能用它来解决这个问题。

如果将日期转换为时间戳,则可以使用 之类的方法将时间分解为 hours/minutes/seconds。

sprintf() 只是一种用 2 位数字分秒格式化日期的方法...

$inputDate = new DateTime("2021-02-22 12:00:00");
$nowDate = new DateTime();

$interval = abs($inputDate->getTimeStamp() - $nowDate->getTimeStamp());
$hours = floor($interval / 3600);
$minutes = floor(($interval / 60) % 60);
$seconds = $interval % 60;

echo sprintf("%d:%02d:%02d", $hours, $minutes, $seconds);

作为输出给出(最近)...

51:22:01

DateTime extension dt针对这个问题有一个特殊的方法:diffFormat()。

echo dt::create('2021-02-22 12:00:00')->diffFormat("Now","%G:%I:%S");

几分钟前的输出:

55:52:36