ani*_*son 704
你可以使用这个gmdate()
功能:
echo gmdate("H:i:s", 685);
Run Code Online (Sandbox Code Playgroud)
Aif*_*Aif 165
一小时是3600秒,一分钟是60秒所以为什么不:
<?php
$init = 685;
$hours = floor($init / 3600);
$minutes = floor(($init / 60) % 60);
$seconds = $init % 60;
echo "$hours:$minutes:$seconds";
?>
Run Code Online (Sandbox Code Playgroud)
产生:
$ php file.php
0:11:25
Run Code Online (Sandbox Code Playgroud)
(我没有测试过这么多,所以可能会有地板错误等)
nat*_*han 72
干得好
function format_time($t,$f=':') // t = seconds, f = separator
{
return sprintf("%02d%s%02d%s%02d", floor($t/3600), $f, ($t/60)%60, $f, $t%60);
}
echo format_time(685); // 00:11:25
Run Code Online (Sandbox Code Playgroud)
Gla*_*vić 64
gmdate()
仅在秒小于86400
(1天)时使用功能:
$seconds = 8525;
echo gmdate('H:i:s', $seconds);
# 02:22:05
Run Code Online (Sandbox Code Playgroud)
请参阅:gmdate()
将秒转换为'脚' 无限制格式*:
$seconds = 8525;
$H = floor($seconds / 3600);
$i = ($seconds / 60) % 60;
$s = $seconds % 60;
echo sprintf("%02d:%02d:%02d", $H, $i, $s);
# 02:22:05
Run Code Online (Sandbox Code Playgroud)
DateTime
扩展示例使用:
$seconds = 8525;
$zero = new DateTime("@0");
$offset = new DateTime("@$seconds");
$diff = $zero->diff($offset);
echo sprintf("%02d:%02d:%02d", $diff->days * 24 + $diff->h, $diff->i, $diff->s);
# 02:22:05
Run Code Online (Sandbox Code Playgroud)
请参阅:DateTime :: __ construct(),DateTime :: modify(),clone, sprintf()
MySQL的例子的结果的范围被限制为时间数据类型,它是从-838:59:59
到838:59:59
:
SELECT SEC_TO_TIME(8525);
# 02:22:05
Run Code Online (Sandbox Code Playgroud)
请参阅:SEC_TO_TIME
PostgreSQL示例:
SELECT TO_CHAR('8525 second'::interval, 'HH24:MI:SS');
# 02:22:05
Run Code Online (Sandbox Code Playgroud)
小智 30
其他解决方案使用gmdate
,但在有超过86400秒的边缘情况下失败.为了解决这个问题,我们可以简单地计算自己的小时数,然后gmdate
将剩余的秒数计算为分钟/秒.
echo floor($seconds / 3600) . gmdate(":i:s", $seconds % 3600);
Run Code Online (Sandbox Code Playgroud)
输入:6030
输出:1:40:30
输入:2000006030
输出:555557:13:50
小智 16
// TEST
// 1 Day 6 Hours 50 Minutes 31 Seconds ~ 111031 seconds
$time = 111031; // time duration in seconds
$days = floor($time / (60 * 60 * 24));
$time -= $days * (60 * 60 * 24);
$hours = floor($time / (60 * 60));
$time -= $hours * (60 * 60);
$minutes = floor($time / 60);
$time -= $minutes * 60;
$seconds = floor($time);
$time -= $seconds;
echo "{$days}d {$hours}h {$minutes}m {$seconds}s"; // 1d 6h 50m 31s
Run Code Online (Sandbox Code Playgroud)
小智 7
gmdate("H:i:s", no_of_seconds);
Run Code Online (Sandbox Code Playgroud)
H:i:s
如果no_of_seconds
大于1天(一天中的秒数),则不会给出时间格式.
它会忽略日价值而只给予Hour:Min:Seconds
例如:
gmdate("H:i:s", 89922); // returns 0:58:42 not (1 Day 0:58:42) or 24:58:42
Run Code Online (Sandbox Code Playgroud)
如果你不喜欢接受的答案或受欢迎的答案,那么试试这个
function secondsToTime($seconds_time)
{
if ($seconds_time < 24 * 60 * 60) {
return gmdate('H:i:s', $seconds_time);
} else {
$hours = floor($seconds_time / 3600);
$minutes = floor(($seconds_time - $hours * 3600) / 60);
$seconds = floor($seconds_time - ($hours * 3600) - ($minutes * 60));
return "$hours:$minutes:$seconds";
}
}
secondsToTime(108620); // 30:10:20
Run Code Online (Sandbox Code Playgroud)
小智 6
这是一个处理负秒和超过1天秒的衬里.
sprintf("%s:%'02s:%'02s\n", intval($seconds/60/60), abs(intval(($seconds%3600) / 60)), abs($seconds%60));
Run Code Online (Sandbox Code Playgroud)
例如:
$seconds= -24*60*60 - 2*60*60 - 3*60 - 4; // minus 1 day 2 hours 3 minutes 4 seconds
echo sprintf("%s:%'02s:%'02s\n", intval($seconds/60/60), abs(intval(($seconds%3600) / 60)), abs($seconds%60));
Run Code Online (Sandbox Code Playgroud)
输出:-26:03:04
我已经在这里解释过这一点 ,也将答案粘贴在这里
在这几个小时内,23:59:59
您可以使用 PHP 默认函数
echo gmdate("H:i:s", 86399);
Run Code Online (Sandbox Code Playgroud)
这只会返回结果直到23:59:59
如果您的秒数超过 86399,则在 @VolkerK 答案的帮助下
$time = round($seconds);
echo sprintf('%02d:%02d:%02d', ($time/3600),($time/60%60), $time%60);
Run Code Online (Sandbox Code Playgroud)
将是使用的最佳选择...
写这样的函数来返回一个数组
function secondsToTime($seconds) {
// extract hours
$hours = floor($seconds / (60 * 60));
// extract minutes
$divisor_for_minutes = $seconds % (60 * 60);
$minutes = floor($divisor_for_minutes / 60);
// extract the remaining seconds
$divisor_for_seconds = $divisor_for_minutes % 60;
$seconds = ceil($divisor_for_seconds);
// return the final array
$obj = array(
"h" => (int) $hours,
"m" => (int) $minutes,
"s" => (int) $seconds,
);
return $obj;
}
Run Code Online (Sandbox Code Playgroud)
然后简单地调用这个函数:
secondsToTime(100);
Run Code Online (Sandbox Code Playgroud)
输出是
Array ( [h] => 0 [m] => 1 [s] => 40 )
Run Code Online (Sandbox Code Playgroud)