У меня есть время запуска магазина как microtime () и время окончания, как microtime () в базе данных.
Теперь я хочу рассчитать, как долго сценарий занимает секунды / минуты / часы для выполнения.
Как я могу сделать в PHP?
в основном, вот так:
echo date("H:i:s",$endtime-$starttime);
$endtime-$starttime
дает продолжительность в секундах, дата используется для форматирования вывода. звучит как сохранение и чтение из базы данных, это не ваша проблема, поэтому я оставил это в своем примере. Обратите внимание, что вам нужно будет использовать microtime(true)
чтобы получить эту работу, с пространственно microtime()
выходом microtime()
вы не можете легко выполнять вычисления.
EDIT: вы можете делать все вычисления самостоятельно. это просто базовая математика, подобная этому (напечатано из моей головы, а не проверено):
$duration = $endtime-$starttime; $hours = (int)($duration/60/60); $minutes = (int)($duration/60)-$hours*60; $seconds = (int)$duration-$hours*60*60-$minutes*60;
от микротрейта до секунд или часов или мин?
microtime – это имя функции php, которая возвращает меру времени в микросекундах, и в основном микросекунды могут быть преобразованы в:
1 миллисекунда = 1000 мкс 1 секунда = 1 000 000 микросекунд 1 минута = 60 000 000 микросекунд 1 час = 3,600,000,000 микросекунд или 1 микросекунда = 0,001 миллисекунды 1 микросекунда = 0,000001 секунд 1 микросекунда = 0,0000000166666667 минут 1 микросекунд = 0,000000000277777778 часов
Если у вас есть время A
и время B
, в секундах, то количество секунд между этими двумя абсолютными временами:
B - A
Если вы хотите отформатировать это количество секунд, вы можете использовать date
чтобы отменить ее.
function formatPeriod($endtime, $starttime) { $duration = $endtime - $starttime; $hours = (int) ($duration / 60 / 60); $minutes = (int) ($duration / 60) - $hours * 60; $seconds = (int) $duration - $hours * 60 * 60 - $minutes * 60; return ($hours == 0 ? "00":$hours) . ":" . ($minutes == 0 ? "00":($minutes < 10? "0".$minutes:$minutes)) . ":" . ($seconds == 0 ? "00":($seconds < 10? "0".$seconds:$seconds)); }
.heading { color: #666; border-bottom: 1px dotted #ddd; font-weight: normal; } .intro { color: #666; background: #f5f5f5; border: 1px solid #ccc; border-radius: 2px; padding: 10px; }
<h1 class="heading">Someo Coole!</h1> <p class="intro">I am a very little boy! Thanks for letting me do some stuff here and around here!</p> <p>Sorry for taking place for none!</p>
function formatPeriod($endtime, $starttime) { $duration = $endtime - $starttime; $hours = (int) ($duration / 60 / 60); $minutes = (int) ($duration / 60) - $hours * 60; $seconds = (int) $duration - $hours * 60 * 60 - $minutes * 60; return ($hours == 0 ? "00":$hours) . ":" . ($minutes == 0 ? "00":($minutes < 10? "0".$minutes:$minutes)) . ":" . ($seconds == 0 ? "00":($seconds < 10? "0".$seconds:$seconds)); }