关于php:将秒转换为HH:MM:SS

Converting Seconds to HH:MM:SS

本问题已经有最佳答案,请猛点这里访问。

我找到了一个函数将秒转换为HH:MM:SS在线,功能如下:

1
2
3
4
5
6
7
8
9
10
11
12
function sec2hms ($sec, $padHours = false) {
$hms ="";
$hours = intval(intval($sec) / 3600);
$hms .= ($padHours)
? str_pad($hours, 2,"0", STR_PAD_LEFT). ':'
: $hours. ':';
$minutes = intval(($sec / 60) % 60);
$hms .= str_pad($minutes, 2,"0", STR_PAD_LEFT). ':';
$seconds = intval($sec % 60);
$hms .= str_pad($seconds, 2,"0", STR_PAD_LEFT);
return $hms;
}

我知道这很好,就像我做echo(sec2hms(3600));它将返回1:00:00

我想要发生的是使用该函数转换列timeran中的每个条目,然后在列usernamescore的HTML表中显示它,我不知道如何这样做,所以如果 有人可以帮助我,那将是伟大的。 我目前正在使用下面的代码显示表格,但只显示以秒为单位的时间,我希望它在HH中:MM:SS:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<tr>
<th>Rank</th>
<th>Username</th>
<th>Time Taken (s)</th>
<th>Score</th>
</tr>
</thead>
<tbody>
<?php
$result = mysql_query("SELECT * FROM gamescores ORDER BY Time DESC");
if (mysql_num_rows($result)) {
for($rank=1; $row = mysql_fetch_assoc($result); $rank++) {
    echo"<tr>
    <td>{$rank}</td>
    <td>{$row['username']}</td>
    <td>{$row['timetaken']}</td>
    <td>{$row['score']}</td>

如果有一种更好的方法可以将秒数转换为HH:MM:SS,那么这也会很棒。


使用MySQL SEC_TO_TIME函数。

例:

1
2
mysql> SELECT SEC_TO_TIME(2378);
        -> '00:39:38'

因此,您可以将SQL查询编写为:

1
SELECT username, score, SEC_TO_TIME(timeran) as timetaken FROM gamescores ORDER BY Time DESC

然后你的代码变成:

1
2
3
4
5
6
7
8
9
<?php
$result = mysql_query("SELECT username, score, SEC_TO_TIME(timeran) as timetaken FROM gamescores ORDER BY Time DESC");
if (mysql_num_rows($result)) {
for($rank=1; $row = mysql_fetch_assoc($result); $rank++) {
    echo"<tr>
    <td>{$rank}</td>
    <td>{$row['username']}</td>
    <td>{$row['timetaken']}</td>
    <td>{$row['score']}</td>


您需要使用该函数包装输出。 将此代码放在适当的位置。

1
echo"<td>". sec2hms($row['timetaken']) ."</td>";