Показывать галочки в днях, часах, минутах и ​​секундах

Я пытаюсь показать UpTime в днях, часах, минутах, секундах.
Что-то вроде 20 дней, 4 часа, 9 минут, 3 секунды

Вот мой PHP-код:

// Get uptime with my SNMP class
$iTicks = $oHardwareMonitoring->fGetSystemUpTime();

// Convert Ticks to seconds
$iSecondes = $iTicks / 100;

// Convert seconds to Days, Hours, Minutes, Seconds
$sSecondes = gmdate('s', $iSecondes);
$sMinutes  = ($sSecondes > 60 ? round(($sSecondes / 60), 0) : null);
$sHeures   = ($sMinutes > 60 ? round(($sMinutes / 60), 0) : null);
$sJours    = ($sHeures > 24 ? round(($sHeures / 24), 0) : null);

// Show the result
echo '<b>'.$sInfosUptime.'</b> : '.
($sJours != null ? $sJours.' '.DAY.' ' : null).
($sHeures != null ? $sHeures.' '.HOUR.' ' : null).
($sMinutes != null ? $sMinutes.' '.MINUTE.' ' : null).
$sSecondes.' '.SECONDE;

Когда я выполняю PHP, я получаю 38 секунд за 429859 клещи.

Как правильно показать время безотказной работы?

0

Решение

$sSecondes никогда не может быть больше 60, потому что вы используете gmdate('s', $iSecondes); который возвращает значение между 00 и 59. Следовательно, следующие условия никогда не будут оцениваться как true,

Используя следующую строку:

$sMinutes = ($iSecondes > 60 ? round(($iSecondes / 60), 0) : null);

возвращает:

1 час 72 минуты 38 секунд

Лучше, но не совсем то, что ожидается.

Мы можем получить правильное количество каждой единицы, используя модуль, деление и floor():

$sSecondes = $iSecondes%60;
$sMinutes  = floor($iSecondes%3600/60);
$sHeures   = floor($iSecondes%86400/3600);
$sJours    = floor($iSecondes/86400);

Который возвращает:

1 час 11 минут 38 секунд

2

Другие решения

Я не мог проверить код, так как у меня нет доступного веб-сервера сразу:

// Get uptime with my SNMP class
$iTicks = $oHardwareMonitoring->fGetSystemUpTime();

// Convert Ticks to secondes
$iSecondes = $iTicks / 100;

// Convert secondes to Days, Hours, Minutes, Secondes
$sSecondes = $iSecondes % 60;
$sMinutes = round($iSecondes / 60,0);
$sHeures = round($sMinutes / 60,0);
$sJours = round($sHeures / 24,0);



// Show the result
echo '<b>'.$sInfosUptime.'</b> : '.
($sJours != 0 ? $sJours.' '.DAY.' ' : null).
($sHeures != 0 ? $sHeures.' '.HOUR.' ' : null).
($sMinutes != 0 ? $sMinutes.' '.MINUTE.' ' : null).
$sSecondes.' '.SECONDE;
0

По вопросам рекламы [email protected]