将时间转换为秒数的函数

7

我们的网站上有很多游泳时间需要转换成秒,例如1:23:33.03或58:22.43。是否有PHP函数或MySQL函数可以完成这个任务?

7个回答

11

@zerkms - 那么毫秒级别的时间呢? - martin clayton
MySQL的时间/日期数据类型不支持分数 :-S - zerkms
实际上,MySQL允许您在传递给各种日期/时间函数的日期/时间文字中指定微秒,并将其作为某些函数的返回值。但它不会将它们存储在任何DATE、DATETIME或TIMESTAMP列中。 - Rob

8
function time2seconds($time='00:00:00')
{
    list($hours, $mins, $secs) = explode(':', $time);
    return ($hours * 3600 ) + ($mins * 60 ) + $secs;
}

来自这里

MySQL还有TIME_TO_SEC()函数。


我可能不会用那样的命名,但这个想法是正确的。 - Tobias Cohen
1
@jasonbar:你抄袭了我的答案。 - zerkms
实际上,我下投票并不是因为抄袭。在看到他的“为什么要踩我?”之前,我就已经发表了关于“抄袭”的评论。所以我的评论并不是回答那个问题的。而且在那之后,我改变了我的投票为+1,以表示礼貌;-) - zerkms

1

如果 MySQL 不支持分数,不适合解决方案-这里有另外一种选择

$time = '1:23:33.03';

$parts = explode(':', $time);

$seconds = 0;

foreach ($parts as $i => $val) {
    $seconds += $val * pow(60, 2 - $i);
}

echo $seconds;

1

使用以下程序将时间转换为秒钟的PHP代码。

<?php
function time_to_sec($time) {
    $hours = substr($time, 0, -6);
    $minutes = substr($time, -5, 2);
    $seconds = substr($time, -2);

    return $hours * 3600 + $minutes * 60 + $seconds;
}

$result=time_to_sec('12:25:59');
echo $result;
?>

1

$current_time_in_seconds="01:21:44.24";

 list($hours, $minutes, $seconds) = explode(":", $current_time_in_seconds);

 $current_time_in_seconds=$hours*3600+$minutes*60+$seconds;

将会得到

01:21:44.24

4904.24


-1

Strtotime 是你需要的。你会得到一个 Unix 时间戳,这个时间戳是以秒为单位的。


不是在寻找一天中的时间,而是要将游泳时间从HH:MM:SS.XX或MM:SS.XX转换为总秒数。 - Brian
你可以使用strtotime函数将时间间隔转换为总秒数。 - Sergi

-1

我有点困惑,但我认为你的意思是1小时23分钟23.03秒。

这并不难做到。我写了一个PHP函数来实现这个功能。我的PHP服务器无法启动,所以我无法测试它,但我认为它应该可以工作。

function ConvertTimeToSeconds($T)
{
    $exp = explode(":",$T);
    $c = count($exp);
    $r = 0;
    if ($c == 2)
    {
        $r = (((int)$exp[0]) * 60) + ((int)$exp[1]);
    }else{
        $r = (((int)$exp[0]) * 3600) + (((int)$exp[1]) * 60) + ((int)$exp[2]);
    }
return $r; }
ConvertTimeToSeconds("1:23:33.03");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接