Php 以天、小时、分钟和秒为单位显示刻度

Php 以天、小时、分钟和秒为单位显示刻度,php,date,monitoring,uptime,uptime-monitoring,Php,Date,Monitoring,Uptime,Uptime Monitoring,我试图以天、小时、分、秒来显示正常运行时间。 大约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 $sSe

我试图以天、小时、分、秒来显示正常运行时间。 大约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;
//使用我的SNMP类获取正常运行时间
$iTicks=$oHardwareMonitoring->fGetSystemUpTime();
//将滴答声转换为秒
$iSecondes=$iTicks/100;
//将秒转换为天、小时、分钟、秒
$sSecondes=gmdate('s',$iSecondes);
$sMinutes=($sCondents>60?圆形($sCondents/60),0):空;
$sHeures=($sMinutes>60?圆形(($sMinutes/60),0):空);
$sJours=($sHeures>24?轮($sHeures/24),0:null);
//显示结果
回显'.$sInfosUptime.'':'。
($sJours!=null?$sJours.'.DAY.'':null)。
($sHeures!=null?$sHeures.'.HOUR.'':null)。
($sMinutes!=null?$sMinutes.'.MINUTE.'':null)。
$sSecondes.“.”第二;
当我执行PHP时,对于429859滴答声,我得到38秒


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

在我的脑海中-无法检查代码,因为我没有立即可用的Web服务器:

// 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;
//使用我的SNMP类获取正常运行时间
$iTicks=$oHardwareMonitoring->fGetSystemUpTime();
//将刻度转换为秒
$iSecondes=$iTicks/100;
//将秒数转换为天、小时、分钟、秒数
$sSecondes=$iSecondes%60;
$sMinutes=圆形($iSecondes/60,0);
$sHeures=圆形($sMinutes/60,0);
$sJours=圆形($sHeures/24,0);
//显示结果
回显'.$sInfosUptime.'':'。
($sJours!=0?$sJours.'.DAY.'':null)。
($sHeures!=0?$sHeures.'.HOUR.'':null)。
($sMinutes!=0?$sMinutes.'.MINUTE.'':null)。
$sSecondes.“.”第二;

$sSecondes
不能大于60,因为您使用的是
gmdate('s',$iSecondes)返回一个介于00和59之间的值。因此,以下条件将永远不会被评估为
true

使用以下行:

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

1小时72分38秒

更好,但并不完全符合预期

我们可以使用模、除和
floor()
,得到每个单元的适当数量:

返回:

1小时11分38秒


预期的结果是什么?大约20天4小时9分钟3秒671728个滴答声我得到了2个小时112分钟57秒的可能副本:-/用JS编写一个解决方案,然后用PHP重写,给我一点时间:)我可以做一些类似于
$sMinutes>=60的事情?($sMinutes>60?$sMinutes-60:$sMinutes=0):$sMinutes)
但这对我来说不是一个好方法,但我需要使用vars来显示正确的文本。我想展示几天,几分钟,等等。。。用法语、英语等。。。我们一定要注意这一点。好的!谢谢你,伙计!它起作用了。我得到了2小时4分钟11秒的745128分
$sSecondes = $iSecondes%60;
$sMinutes  = floor($iSecondes%3600/60);
$sHeures   = floor($iSecondes%86400/3600);
$sJours    = floor($iSecondes/86400);