我正在尝试创建一个回调,用于计算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个)<强烈>虽然我需要它只考虑几天,而不考虑分钟和小时。
答案 0 :(得分:0)
根据John Conde的评论,第一个解决方案是一个已经发现如下的转变:
$diffDays = abs((int)$oldStartTime->format('d') - (int)$startTimestamp->format('d'));
它测试小时是否在同一个旅程中,如果是这样,我们将天数加上+ 1。
第二个解决方案是简单地创建两个新的DateTime对象,其中包含新旧时间戳的Y-m-d格式,以便比较不会保持小时差异。