我正在比较数据库的开始和结束时间。我终于能够弄明白了,但现在我需要将时间加在一起以获得所有时间差异。最好/最快的方法是什么?我之前从未使用过DateTime。
我会在我的while循环中添加$date->add($interval)
这样的内容吗?我无法弄清楚实现它的正确方法。
$starttime
var示例:上午11:03:52
$startdate
var示例:08-16-2016
$endtime
var示例:08:04:53 AM
$enddate
var示例:2016年8月17日
$start = $startdate." ".$starttime;
$end = $enddate." ".$endtime;
$start_formatted = DateTime::createFromFormat('m-d-Y g:i:s A', $start);
$started_on = $start_formatted->format("m-d-Y g:i:s A");
$end_formatted = DateTime::createFromFormat('m-d-Y g:i:s A', $end);
$ended_on = $end_formatted->format("m-d-Y g:i:s A");
$interval=$start_formatted->diff($end_formatted);
$intervalTypes = array("y", "m", "d", "h", "i", "s");
$intervalDescription = array("years", "months", "days", "hours", "minutes", "seconds");
$intervalLength = count($intervalTypes);
$intervalCounter = 0;
while ($intervalCounter < $intervalLength) {
$currentInterval = $intervalTypes[$intervalCounter];
if ($interval->$currentInterval != 0) {
if ($interval->$currentInterval > 1) {
echo $interval->$currentInterval." ".$intervalDescription[$intervalCounter]." ";
} else {
echo $interval->$currentInterval." ".substr($intervalDescription[$intervalCounter], 0, -1)." ";
}
}
$intervalCounter++;
}
答案 0 :(得分:0)
您应该一次创建一个默认的dateTime。另一个设置在同一时间。然后,您应该将找到的间隔添加到两个dateTime之一。最后,你只需要再次调用diff方法到现在两者之间的总时差。
示例:
$default = new DateTime("2000-01-01");
$total = new DateTime("2000-01-01");
您的代码在这里计算所有间隔
$total->add($interval);
最后
$totalInterval = $default->diff($total);
这里你得到一个DateInterval,其中包含所有区间的累积