Преобразование секунд в ЧЧ:ММ:СС [дубликат]


На этот вопрос уже есть ответ здесь:

Я нашел функцию для преобразования секунд в ЧЧ:ММ:СС онлайн, функция такая:

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, а затем отобразить ее в таблице HTML со столбцами username и score, я не уверен, как это сделать, поэтому, если бы кто-нибудь мог мне помочь, это было бы здорово. В настоящее время я использую приведенный ниже код для отображения таблицы, но он показывает только время, затраченное в секундах, и я хотел бы, чтобы оно было в ЧЧ:ММ:СС:

<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>

Если есть лучший способ преобразования секунд в ЧЧ:ММ:СС, то это тоже было бы здорово.

Author: Brian Tompsett - 汤莱恩, 2011-08-20

2 answers

Используйте функцию MySQL SEC_TO_TIME.

Пример:

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

Таким образом, вы можете написать свой SQL-запрос следующим образом:

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

Затем ваш код становится:

<?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>
 6
Author: JJ., 2011-08-19 20:48:55

Вам нужно обернуть вывод с помощью функции. Поместите этот код в соответствующее место.

echo "<td>". sec2hms($row['timetaken']) . "</td>";
 0
Author: Jarrod Nettles, 2011-08-19 20:50:46