使用PHP将sql中的varchar(16)转换为函数时间

使用PHP将sql中的varchar(16)转换为函数时间,php,datetime,time,casting,Php,Datetime,Time,Casting,编辑以反映以下建议的一些更改 我从数据库中提取了一些时间和分钟。在数据库中它们看起来像这样 | taskID | startTime | endTime | everyMinutes | |________|__________________|__________________|__________________| | 10 | 05:00:00.0000000 | 16:59:00.0000000 | 00:15:00.0000000 |

编辑以反映以下建议的一些更改

我从数据库中提取了一些时间和分钟。在数据库中它们看起来像这样

| taskID |    startTime     |      endTime     |   everyMinutes   |
|________|__________________|__________________|__________________|
|   10   | 05:00:00.0000000 | 16:59:00.0000000 | 00:15:00.0000000 |
startTime
endTime
everyMinutes
属于
varchar(16)
。不幸的是,我无法改变这一点

我在变量中包含这些值:

$strStartTime = $row['startTime'];
$strEndTime = $row['endTime'];
$strEveryMinutes = $row['everyMinutes'];

$startTime = date('H:i:s', strtotime($strStartTime));
$endTime = date('H:i:s', strtotime($strEndTime));
$everyMinutes = date('H:i:s', strtotime($strEveryMinutes));

$composite = $startTime + $everyMinutes;
echo $composite; # returns "5", should be "5:15"
我的目标是获取
$startTime
并将其添加到
$everyMinutes
中,以便

 echo $composite # displays "05:15:00" without all the extra 0's
使用:

编辑:完整代码:

$startTime = date('H:i:s', strtotime($row['startTime']));
$minutes = substr($row['everyMinutes'], 3, 2); // this will cut out the minutes part. I am assuming everyMinutes is always only in minutes.
$composite = date('H:i:s', strtotime($row['startTime']." + $minutes minutes"));

我已经编辑了上面的代码。使用
strotime
date
但仍无法返回有效答案strotime功能强大,但正如您所见,它将创建今天的时间+给定的小时和分钟。所以当你把它们加在一起,你会得到1970年1月1日以来的时间加在今天。这就是为什么您必须使用substr()从$everyMinutes中获取要添加的分钟数。如果您希望从数据库端工作
http://sqlfiddle.com/#!2/42988/48
我已经给出了转换的简要功能。。
2013-04-16 05:00:00
2013-04-16 05:15:00
$startTime = date('H:i:s', strtotime($row['startTime']));
$minutes = substr($row['everyMinutes'], 3, 2); // this will cut out the minutes part. I am assuming everyMinutes is always only in minutes.
$composite = date('H:i:s', strtotime($row['startTime']." + $minutes minutes"));