2012-03-07 25 views

回答

1
$seconds = 3600; 
echo gmdate('H:i:s', $seconds); 

xato幾乎沒有

用這種方法這是一個作弊的一點點,但我相信它會以小時,分鐘和秒的方式完全按照您希望的方式運行。

編輯:而且無論TZ設置如何,所有服務器的行爲都將保持一致

1
$seconds = 3600; 
echo date('H:i:s', $seconds); 
+0

怎麼會給我20:00:00?回聲日期('H:i:s',3600-19 * 3600);'在每個服務器上工作? – John 2012-03-07 16:44:53

+1

'date'實際上取決於當前的時區。我沒有想到這一點。你可以使用'date_default_timezone_set('UTC');'但這有點醜陋。 – xato 2012-03-07 16:46:07

2

試試這個:

<?php 
$seconds = 3600; 
echo sprintf("%02d:%02d:%02d",$seconds/3600,($seconds/60)%60,$seconds%60); 
?> 
1

你去那裏。我可能有時會自己使用這種功能,所以我爲你寫了這個功能。

function time_format($time) { 
    if($time > 86400) { 
     return "more than 1 day"; 
    } 

    $display = ''; 
    if ($time >= 3600) { 
     $hours = floor($time/3600); 
     $time = $time%3600; 
     if($hours <= 9) { $display .= "0"; } 
     $display .= $hours; 
    } else { 
     $display .= "00"; 
    } 
    $display .= ":"; 
    if($time >= 60) { 
     $minutes = floor($time/60); 
     $time = $time%60; 
     if($minutes <= 9) { $display .= "0"; } 
     $display .= $minutes; 
    } else { 
     $display .= "00"; 
    } 
    $display .= ":"; 
    if($time > 0) { 
     $seconds = $time; 
     if($seconds <= 9) { $display .= "0"; } 
     $display .= $seconds; 
    } else { 
     $display .= "00"; 
    } 
    return $display; 
} 

編輯:看到bozdoz的回答讓我感到汗顏:(

+1

+1爲你的恥辱。並支持你的解決方案。 :) – bozdoz 2012-03-07 17:04:34

+0

謝謝,已經感覺好多了 – DerShodan 2012-03-07 17:06:12