Еще одна проблема с датой и временем.

У меня есть время, когда что-то занято, например -> «2021-02-24 12:00:00» (строка)

У меня есть текущая дата вроде этой -> date ('Y-m-d h: i: s') (string)

Мне нужно подсчитать, сколько часов: минут: секунд прошло между ними. Например (занято) 2021-02-14 15:00:00 текущее время - 14.02.2021 16:15:00, поэтому мне нужно показать что-то похожее на это: 01:15:00.

Но что, если прошло более 99 часов, как мне сделать так, чтобы это выглядело так -> 120: 02: 36.

Вопрос, который я задал вчера, был недостаточно определен, поэтому я получил несколько ответов здесь: (Я знаю, что это моя проблема)

Добавление даты и времени в PhP

Но в конце концов я не могу использовать его для этой проблемы.

0
JosephSmith 24 Фев 2021 в 17:57

2 ответа

Лучший ответ

Если вы конвертируете даты в метки времени, вы можете использовать что-то вроде https://stackoverflow.com/a/3172368/1213708, чтобы разбить время на часы / минуты / секунды.

sprintf() - это просто способ форматирования даты с использованием двухзначных минут и секунд ...

$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
2
Nigel Ren 24 Фев 2021 в 15:24

Вы можете использовать date_diff:

$inputDate = "2021-02-24 12:00:00";
$nowDate = date('Y-m-d h:i:s');

$interval = date_diff($nowDate, $inputDate);

$interval->h; // Hours difference
$interval->i; // Minutes difference
$interval->s; // Seconds difference

$interval - объект DateInterval

-1
gbalduzzi 24 Фев 2021 в 15:04