Intereting Posts
Как преобразовать массив в строки, разделенные запятой, в шаблоне smarty? Действие триггера, когда загрузка файла фактически завершается получить модель sales_quote в sales / Ordercontroller magento backend Проверьте, поступает ли запрос из приложения Windows Как создать разбиение на страницы в Codeiginter? Как быстро выбрать 3 случайные записи из таблицы 30k MySQL с фильтром где-то одним запросом? Paypal API Express Checkout в PHP Код ошибки платежа 13113 Zend 2 :: легко получить путь к общей папке или basePath () в действии контроллера $ _SERVER не работает в скрипте php, проходящем через cron Результаты умножения функции в PHP В PHP, как я могу получить Timezone из офсетной линии и страны? Каков наилучший способ создания whois-поиска? Использовать заголовки страниц / сообщений в URL-адресе Вставьте значение NULL в поле базы данных с символом char (2) как тип Определите, является ли массив ассоциативным (хэш) или нет

от секунд до нескольких минут и от нескольких дней до нескольких недель

Мой вопрос в том, как с PHP у нас может быть автоматизированная система, которая может это сделать: если у нас есть $seconds= 120; И скрипт должен получить это значение, посмотрите, что это равно 2 мин, а затем напечатайте это значение за считанные минуты . То же, что мы хотим иметь в течение нескольких дней, давайте скажем $days = 7; сценарий должен получить это значение, проверить количество дней, и в этом случае ему нужно распечатать 1 неделю . Спасибо вам, ребята!

 <?php /** * @param int $secs * * @return string */ function formatSeconds($secs) { $secs = (int)$secs; if ( $secs === 0 ) { return '0 secs'; } // variables for holding values $mins = 0; $hours = 0; $days = 0; $weeks = 0; // calculations if ( $secs >= 60 ) { $mins = (int)($secs / 60); $secs = $secs % 60; } if ( $mins >= 60 ) { $hours = (int)($mins / 60); $mins = $mins % 60; } if ( $hours >= 24 ) { $days = (int)($hours / 24); $hours = $hours % 60; } if ( $days >= 7 ) { $weeks = (int)($days / 7); $days = $days % 7; } // format result $result = ''; if ( $weeks ) { $result .= "{$weeks} week(s) "; } if ( $days ) { $result .= "{$days} day(s) "; } if ( $hours ) { $result .= "{$hours} hour(s) "; } if ( $mins ) { $result .= "{$mins} min(s) "; } if ( $secs ) { $result .= "{$secs} sec(s) "; } $result = rtrim($result); return $result; } echo formatSeconds(0), "\n"; echo formatSeconds(30), "\n"; echo formatSeconds(300), "\n"; echo formatSeconds(3000), "\n"; echo formatSeconds(30000), "\n"; echo formatSeconds(300000), "\n"; echo formatSeconds(3000000), "\n"; echo formatSeconds(30000000), "\n"; 

Вывод:

 0 secs 30 sec(s) 5 min(s) 50 min(s) 8 hour(s) 20 min(s) 3 day(s) 23 hour(s) 20 min(s) 4 week(s) 6 day(s) 53 hour(s) 20 min(s) 49 week(s) 4 day(s) 53 hour(s) 20 min(s) 

4 нед. 6 дн. 53 час. 20 мин.

53 час (ов)? также, 300000 секунд – 3 дня 11 часов, а не 3 дня 23 часа

 function formatSeconds($secs) { if (!$secs = (int)$secs) return '0 seconds'; $units = array( 'week' => 604800, 'day' => 86400, 'hour' => 3600, 'minute' => 60, 'second' => 1 ); $strs = array(); foreach($units as $name=>$int){ if($secs < $int) continue; $num = (int) ($secs / $int); $secs = $secs % $int; $strs[] = "$num $name".(($num == 1) ? '' : 's'); } return implode(', ', $strs); } var_dump(formatSeconds(0)); var_dump(formatSeconds(30)); var_dump(formatSeconds(300)); var_dump(formatSeconds(3000)); var_dump(formatSeconds(30000)); var_dump(formatSeconds(300000)); var_dump(formatSeconds(3000000)); var_dump(formatSeconds(30000000)); string(9) "0 seconds" string(10) "30 seconds" string(9) "5 minutes" string(10) "50 minutes" string(19) "8 hours, 20 minutes" string(28) "3 days, 11 hours, 20 minutes" string(37) "4 weeks, 6 days, 17 hours, 20 minutes" string(37) "49 weeks, 4 days, 5 hours, 20 minutes" 

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

 $seconds = 120; $minutes = floor($seconds/60); echo $minutes.' min'; 

Не совсем уверен, правильно ли я понял ваш вопрос.