php获取2次之间的时间间隔

时间:2016-03-31 08:58:45

标签: php

我正在尝试创建一个预订表单,用户可以在5分钟的间隔内选择2个给定时间之间的预订时间。例如,我希望在上午10点到下午12点之间的时间段,这将给我约20个时段。

当用户选择一个插槽时,最早的插槽应该比当前时间提前至少15分钟,但是如果需要,用户可以选择插槽和小时或更长时间。

我在SO上找到了一些代码(不记得在哪里),我已根据自己的需要对其进行了编辑,如果当前时间在开始和结束时间之内,但是如果当前时间是在最早的时间之前一小时,它不会创建时间段。

我知道为什么会这样做,但我不知道如何解决它。它与public int compare(Trees t1, Trees t2) { // convert names to lowercase String name1 = t1.get().toLowerCase(); String name2 = t2.get().toLowerCase(); // compare the two names return name1.compareTo(name2); } 条件有关。

如果可能的话,我希望能够在第一个可用时段之前预订一个时段。

while

2 个答案:

答案 0 :(得分:1)

Carbon拥有从基类DateTime类继承的所有函数。如果您发现Carbon中缺少任何内容但DateTime中存在任何内容,则此方法允许您访问基本功能。

 // Carbon::diffInYears(Carbon $dt = null, $abs = true)

    echo Carbon::now('America/Vancouver')->diffInSeconds(Carbon::now('Europe/London')); // 0

    $dtOttawa = Carbon::createFromDate(2000, 1, 1, 'America/Toronto');
    $dtVancouver = Carbon::createFromDate(2000, 1, 1, 'America/Vancouver');
    echo $dtOttawa->diffInHours($dtVancouver);                             // 3

    echo $dtOttawa->diffInHours($dtVancouver, false);                      // 3
    echo $dtVancouver->diffInHours($dtOttawa, false); 

使用碳类对此非常有帮助

答案 1 :(得分:1)

我设法使用Datetime()

让它工作
$timenow = new DateTime(date('H:i'));
$timenow->add(new DateInterval('PT15M'));

$start = new DateTime('11:00');
$end = new DateTime('14:00');
$interval = new DateInterval('PT5M');

$time_slots = $this->countStartTimes();

$available_slots = array();

$period = new DatePeriod($start, $interval, $end);

foreach($period as $time) {

    $timeslot = $time->format('H:i');

    if ($timenow > $time) {
        continue;
    }            

    if(array_key_exists($timeslot, $time_slots)) {
        if($time_slots[$timeslot] == SLOTS) {
            $available_slots[] = array('key' => $timeslot, 'value' => 'FULL'); 
            continue;
        }
    }

    $available_slots[] = array('key' => $timeslot, 'value' => $timeslot);
}