【问题标题】:Converting Seconds to HH:MM:SS [duplicate]将秒转换为 HH:MM:SS [重复]
【发布时间】:2011-10-30 22:19:08
【问题描述】:

我在网上找到了一个秒转HH:MM:SS的函数,函数是这样的:

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

<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 那就太好了。

【问题讨论】:

标签: php mysql html-table


【解决方案1】:

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

【讨论】:

  • @JJ 我之前尝试过,但没有返回我想要的,它返回了Resource ID #8
  • 我会试试你刚刚编辑的帖子,谢谢。
  • 刚刚设法让它工作,谢谢,这确实比其他答案更快。
【解决方案2】:

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

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

【讨论】:

  • 这对我有用,非常感谢。
  • 这行得通,但如果你能让 SEC_TO_TIME 工作,它的运行速度会比这个解决方案快得多,尤其是对于大型数据集。
  • 同意,但学习如何这样做对他也有好处。 Jamie,如果答案正确,请将其标记为已接受 - 欢迎来到 S.O.
  • @JJ,谢谢,我也会调查一下。
猜你喜欢
  • 2018-07-11
  • 1970-01-01
  • 1970-01-01
  • 2021-02-18
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
  • 1970-01-01
相关资源
最近更新 更多