我们的网站上有很多游泳时间需要转换成秒,例如1:23:33.03或58:22.43。是否有PHP函数或MySQL函数可以完成这个任务?
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_time-to-sec
mysql> SELECT TIME_TO_SEC('22:23:00');
-> 80580
mysql> SELECT TIME_TO_SEC('00:39:38');
-> 2378
function time2seconds($time='00:00:00')
{
list($hours, $mins, $secs) = explode(':', $time);
return ($hours * 3600 ) + ($mins * 60 ) + $secs;
}
来自这里。
MySQL还有TIME_TO_SEC()函数。
如果 MySQL 不支持分数,不适合解决方案-这里有另外一种选择
$time = '1:23:33.03';
$parts = explode(':', $time);
$seconds = 0;
foreach ($parts as $i => $val) {
$seconds += $val * pow(60, 2 - $i);
}
echo $seconds;
使用以下程序将时间转换为秒钟的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;
?>
$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
Strtotime 是你需要的。你会得到一个 Unix 时间戳,这个时间戳是以秒为单位的。
我有点困惑,但我认为你的意思是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");