Ниже приведена моя функция, которая берет метку времени и сообщает вам время, прошедшее с этого момента в формате 23 дня 3 часа 4 минуты 6 секунд
Основная проблема на моем сайте: я использую MySQL DATETIME вместо TIMESTAMP, поэтому, чтобы использовать эту функцию, я должен преобразовать дату / время из mysql в метку времени, а затем запустить ее через свою функцию.
Так что мне любопытно, есть ли лучший способ сделать это, на некоторых страницах, где у меня есть 100 результатов mysql, PHP должен преобразовать 100 дат в метки времени, а затем запустить их на 100 из них.
Мне просто интересно, есть ли лучший метод производительности, и, пожалуйста, не рекомендуем все фреймворки PHP (zend и т. Д.)
Ценю любые советы / помощь
function duration($timestamp) {
$years = floor($timestamp / (60 * 60 * 24 * 365));
$timestamp %= 60 * 60 * 24 * 365;
$weeks = floor($timestamp / (60 * 60 * 24 * 7));
$timestamp %= 60 * 60 * 24 * 7;
$days = floor($timestamp / (60 * 60 * 24));
$timestamp %= 60 * 60 * 24;
$hrs = floor($timestamp / (60 * 60));
$timestamp %= 60 * 60;
$mins = floor($timestamp / 60);
$secs = $timestamp % 60;
$str = "";
if ($years == 1) {
$str .= "{$years} year ";
}elseif ($years > 1) {
$str .= "{$years} yearss ";
}
if ($weeks == 1) {
$str .= "{$weeks} week ";
}elseif ($weeks > 1) {
$str .= "{$weeks} weeks ";
}
if ($days == 1) {
$str .= "{$days} day ";
}elseif ($days > 1) {
$str .= "{$days} days ";
}
if ($hrs == 1) {
$str .= "{$hrs} hour ";
}elseif ($hrs > 1) {
$str .= "{$hrs} hours ";
}
if ($mins == 1) {
$str .= "{$mins} minute ";
}elseif ($mins > 1) {
$str .= "{$mins} minutes ";
}
if ($mins < 1 && $secs >= 1) {
$str .= "{$secs} seconds ";
}
return $str;
}