可能重复:
将秒转换为HH:MM:SS
我有一个整数作为秒数。我想把这个整数转换成小时/分钟/秒,如下所示:
1:45:32
如果秒数小于一小时,则应返回字符串:
45:32
如果分钟数小于10,它应该返回如下格式的字符串:
3:25
最后,如果秒数小于1分钟,它应该返回以下内容:
0:04
在PHP中最好的方法是什么?
最简单的方法是
if($seconds < 3600){
$format = 'i:s';
}else{
$format = 'G:i:s';
}
echo date($format, $seconds);
编辑:这不会修复你的分钟数<10问题。你可以自己处理会议记录。像
$time = ($seconds >= 3600) ? date('G', $seconds).':' : '';
$time .= intval(date('i',$seconds)).':'.date('s', $seconds);
<?php
$seconds = (1*60 + 45)*60 + 32; // 1:45:32
define("SECONDS_IN_HOUR", 3600);
define("SECONDS_IN_MINUTE", 60);
// hours
if ($seconds >= SECONDS_IN_HOUR)
{
print floor($seconds/SECONDS_IN_HOUR) . ":";
$seconds = $seconds % SECONDS_IN_HOUR;
}
// minutes
if ($seconds >= SECONDS_IN_MINUTE)
{
print floor($seconds/SECONDS_IN_MINUTE) . ":";
$seconds = $seconds % SECONDS_IN_MINUTE;
}
// seconds
print $seconds;
?>
我认为Rufinus非常接近:
foreach(array(60 => ' 0:s', 3600 => 'i:s', 'G:i:s') as $val => $format)
{
if ($seconds < $val) break;
}
echo ltrim(ltrim(gmdate($format, $seconds), '0'), ' ');
此变体使用存储在数组中的配置,该配置根据以秒为单位的时间值关联格式字符串(作为关键字)。最后一个元素是将失败的默认格式。
编辑:遗憾的是,date
中没有允许在没有前导的情况下指定分钟数的格式化代码。因此,需要重新格式化日期字符串,以便偶尔删除前导0。这里是用ltrim
完成的。
function formatHMS($time) {
$s = $time % 60;
$time= floor($time/60);
$m = $time % 60;
$time= floor($time/60);
$h = floor($time);
$str = $s;
if ($m>0)
$str = "$m:$str";
if ($h>0)
$str = "$h:$str";
return $str;
}
考虑使用explode()
&CCD_ 4,然后应用小于&大于!