使用DateTime一起添加大量日期和时间

时间:2016-08-16 16:06:06

标签: php

我正在比较数据库的开始和结束时间。我终于能够弄明白了,但现在我需要将时间加在一起以获得所有时间差异。最好/最快的方法是什么?我之前从未使用过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++;
}

1 个答案:

答案 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,其中包含所有区间的累积