以天、小时、分钟和秒为单位显示刻度
Show ticks in Days, Hours, Minutes and Seconds
我正在尝试以天、小时、分钟、秒为单位显示正常运行时间。
像 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 Seconde(s) for 429859 ticks。
如何正确显示正常运行时间?
在我的脑海中 - 无法检查代码,因为我没有立即可用的网络服务器:
// 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;
$sSecondes
永远不会大于 60,因为您使用 gmdate('s', $iSecondes);
其中 returns 是 00 到 59 之间的值。因此,后面的条件永远不会被评估为 true
.
使用以下行:
$sMinutes = ($iSecondes > 60 ? round(($iSecondes / 60), 0) : null);
returns:
1 HOUR 72 MINUTE 38 SECONDE
更好,但不完全符合预期。
我们可以通过取模、除法和floor()
:
得到每个单元的适量
$sSecondes = $iSecondes%60;
$sMinutes = floor($iSecondes%3600/60);
$sHeures = floor($iSecondes%86400/3600);
$sJours = floor($iSecondes/86400);
哪个returns:
1 HOUR 11 MINUTE 38 SECONDE
我正在尝试以天、小时、分钟、秒为单位显示正常运行时间。 像 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 Seconde(s) for 429859 ticks。
如何正确显示正常运行时间?
在我的脑海中 - 无法检查代码,因为我没有立即可用的网络服务器:
// 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;
$sSecondes
永远不会大于 60,因为您使用 gmdate('s', $iSecondes);
其中 returns 是 00 到 59 之间的值。因此,后面的条件永远不会被评估为 true
.
使用以下行:
$sMinutes = ($iSecondes > 60 ? round(($iSecondes / 60), 0) : null);
returns:
1 HOUR 72 MINUTE 38 SECONDE
更好,但不完全符合预期。
我们可以通过取模、除法和floor()
:
$sSecondes = $iSecondes%60;
$sMinutes = floor($iSecondes%3600/60);
$sHeures = floor($iSecondes%86400/3600);
$sJours = floor($iSecondes/86400);
哪个returns:
1 HOUR 11 MINUTE 38 SECONDE