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



又是一个日期时间问题。

我有一段时间,当事情变得繁忙,像->"2021-02-24 12:00:00"字符串)

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

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

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

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

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

如果将日期转换为时间戳,则可以使用类似https://stackoverflow.com/a/3172368/1213708的东西将时间分解为小时/分钟/秒。

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扩展dt有一个特殊的方法来解决这个问题:diffFormat()。

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

几分钟前的输出:

55:52:36

最新更新