0

UpTime を日、時間、分、秒で表示しようとしています。204時間93秒

ここに私の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 を実行すると、429859ティックで38 秒になります。

稼働時間を正しく表示するには?

4

2 に答える 2

2

$sSecondes00 ~ 59 の値を返す whichを使用するため、60 を超えることはありませんgmdate('s', $iSecondes);。したがって、続く条件は として評価されることはありません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秒

于 2015-09-04T13:59:29.057 に答える