以天,小时,分钟和秒显示刻度

时间:2015-09-04 13:17:49

标签: php date monitoring uptime uptime-monitoring

我试图在天,小时,分钟,秒中显示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时, 429859 时,我获得 38 Seconde(s)

如何正确显示正常运行时间?

2 个答案:

答案 0 :(得分:2)

$sSecondes永远不会超过60,因为您使用gmdate('s', $iSecondes);返回介于00和59之间的值。因此,后面的条件永远不会被评估为true

使用以下行:

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

返回:

  

1小时72分钟38 SECONDE

更好但不完全符合预期。

我们可以使用modulo,division和floor()来获得每个单元的适当数量:

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

返回:

  

1小时11分38秒

答案 1 :(得分:0)

出了我的头脑 - 无法检查代码,因为我没有立即提供网络服务器:

// 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;