比较天数时的DateTime差异结果

时间:2017-04-27 14:47:32

标签: php datetime

我正在尝试创建一个回调,用于计算FullCalendar事件列表的旧启动DateTime和新启动DateTime之间的差异。

我现在在做什么:

 $event = AppointmentCustomEvent::where('id','=',$id)->first();
            $oldStartTime = new \DateTime($event->start_timestamp);
            $oldEndTime = new \DateTime($event->end_timestamp);

            $startDiff = $oldStartTime->diff($startTimestamp);
            $endDiff = $oldEndTime->diff($endTimestamp);
            var_dump($oldStartTime->format('Y-m-d') - $startTimestamp->format('Y-m-d'));
            var_dump($oldStartTime->format('Y-m-d'));
            var_dump($startTimestamp->format('Y-m-d'));
            var_dump($startDiff->d);

var_dump正在返回:

int(0)
string(10) "2017-04-27"
string(10) "2017-04-26"
int(0)

正如你所看到的那样27 - 26应该返回1而它返回0到目前为止是正确的,因为我在同一天的两个时间戳之间移动了事件(从第24个时间的第27个时间到第18个时间点的第26个)<强烈>虽然我需要它只考虑几天,而不考虑分钟和小时。

1 个答案:

答案 0 :(得分:0)

根据John Conde的评论,第一个解决方案是一个已经发现如下的转变:

$diffDays = abs((int)$oldStartTime->format('d') - (int)$startTimestamp->format('d'));

它测试小时是否在同一个旅程中,如果是这样,我们将天数加上+ 1。

第二个解决方案是简单地创建两个新的DateTime对象,其中包含新旧时间戳的Y-m-d格式,以便比较不会保持小时差异。