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

时间:2013-04-16 16:47:44

标签: php datetime time casting

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

我从数据库中抽出几次和几分钟。它们在db

中看起来像这样
| taskID |    startTime     |      endTime     |   everyMinutes   |
|________|__________________|__________________|__________________|
|   10   | 05:00:00.0000000 | 16:59:00.0000000 | 00:15:00.0000000 |

startTimeendTimeeveryMinutes属于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

1 个答案:

答案 0 :(得分:2)

使用strtotime

<?php
echo date('Y-m-d H:i:s', strtotime('05:00:00.000000'))."<br/>\n";
echo date('Y-m-d H:i:s', strtotime('05:00:00.000000 + 15 minutes'))."<br/>\n";
?>

输出:

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"));