2012-03-07 50 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