2015-09-04 37 views
0

我試圖在Days,Hours,Minutes,Secondes中顯示UpTime。 喜歡的東西20天4小時9分鐘3 secondes在Days,Hours,Minutes和Secondes中顯示蜱

這是我的PHP代碼:

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

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

// Convert secondes to Days, Hours, Minutes, Secondes 
$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 蜱蟲。

任何人都可以幫助我正確顯示正常運行時間嗎?

我已經做谷歌,#2等的研究...

PS:請告訴我,如果你不明白我的問題... 我是法國人,我的英語不是很好^^」

+0

是什麼預期產出? –

+0

類似於_20 days_,_4 hours_,_9 minutes_,_3 secondes_ – SatanicGeek

+0

[將秒轉換爲天,小時,分和秒](http://support.microsoft.com/kb/8273804/convert-seconds-into-days -hours-minutes-and-seconds) – k1eran

回答

2

$sSecondes永遠不能大於60,因爲你使用gmdate('s', $iSecondes);,它返回一個val ue在00到59之間。因此,以下條件永遠不會被評估爲true

使用以下行:

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

回報:

1小時72分38 SECONDE

更好,但不完全是預期。

我們可以通過使用模,分工和floor()得到各單位的適量:

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

將返回:

1小時11分38 SECONDE

+1

Heeeeell是啊!謝謝老兄 !它正在工作。我得到_2 Heure(s)4分鐘11次(s)_ for _745128 ticks_ – SatanicGeek

0

從我的頭頂 - 無法檢查代碼,因爲我沒有可用的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; 
+0

我得到_2 Heure(s)112分鐘57 Seconde(s)_ for _671728_ ticks: -/ – SatanicGeek

+0

在JS中處理一個解決方案,然後用PHP重寫它,給我片刻。 :) – Jordumus

+0

我可以做一些像'$ sMinutes> = 60? ($ sMinutes> 60?$ sMinutes - 60:$ sMinutes = 0):$ sMinutes)'但它對我來說不是一個好方法 – SatanicGeek