我想帮助将秒转换为 MM:DD:HH:MM:SS 格式。
我这里有这个代码:
<?php
// Convert seconds into months, days, hours, minutes, and seconds.
function secondsToTime($ss) {
$s = $ss%60;
$m = floor(($ss%3600)/60);
$h = floor(($ss%86400)/3600);
$d = floor(($ss%2592000)/86400);
$M = floor($ss/2592000);
return "$M months, $d days, $h hours, $m minutes, $s seconds";
}
?>
输出
的示例0个月,1天,3小时,46分钟,39秒
我希望它像是
00:01:03:46:39
我该怎么做?
答案 0 :(得分:3)
从我收集的内容来看,您似乎对返回包含冒号分隔的两位数字的字符串感兴趣。假设定位不需要改变,您可以执行类似以下的操作:
<?php
// Prefix single-digit values with a zero.
function ensure2Digit($number) {
if($number < 10) {
$number = '0' . $number;
}
return $number;
}
// Convert seconds into months, days, hours, minutes, and seconds.
function secondsToTime($ss) {
$s = ensure2Digit($ss%60);
$m = ensure2Digit(floor(($ss%3600)/60));
$h = ensure2Digit(floor(($ss%86400)/3600));
$d = ensure2Digit(floor(($ss%2592000)/86400));
$M = ensure2Digit(floor($ss/2592000));
return "$M:$d:$h:$m:$s";
}
或者,如果您不喜欢再管理一个功能的想法,也许这可能更适合您:
<?php
// Convert seconds into months, days, hours, minutes, and seconds.
function secondsToTime($ss) {
$s = $ss%60;
$m = floor(($ss%3600)/60);
$h = floor(($ss%86400)/3600);
$d = floor(($ss%2592000)/86400);
$M = floor($ss/2592000);
// Ensure all values are 2 digits, prepending zero if necessary.
$s = $s < 10 ? '0' . $s : $s;
$m = $m < 10 ? '0' . $m : $m;
$h = $h < 10 ? '0' . $h : $h;
$d = $d < 10 ? '0' . $d : $d;
$M = $M < 10 ? '0' . $M : $M;
return "$M:$d:$h:$m:$s";
}
然后调用我们的函数(无论你决定使用哪种方法):
<?php
$ss = 123456;
print secondsToTime($ss);
?>
答案 1 :(得分:2)
简单方法:
print date('m:d:h:i:s', $ss); // $ss = seconds
据我所知,这不能按照你想要的方式处理多年,因为它将从1970年开始计算。但显然你不需要显示年份。
或者,您可以使用(s)printf
格式化当前字符串:
printf('%02d:%02d:%02d:%02d:%02d', $M, $d, $h, $m, $s);
答案 2 :(得分:0)
给定所有变量,您只需使用PHP构建字符串:
$str = "$M:$d:$h:$m:$s"
然而,这段代码不会处理前导零。