laravel 5.6开始时间结束时间持续时间

时间:2018-09-09 04:40:37

标签: php laravel

我正在尝试在Laravel 5.6中创建一个函数

我有一个$start_time$end_time$duration变量。

我希望在$duration期间获得从开始时间到结束时间的时隙,例如:

$duration = 30 min     
$start_time = 9:00 am
$end_time = 9:00 pm

结果:

  

-9:00-9:30
  -9:30-10:00
  -10:00-10:30
  ....等

此外,我不想在数据库中显示时间与约会重叠的时段。

2 个答案:

答案 0 :(得分:1)

如果您使用的是Laravel,我相信您会听说过时间和日期的依赖性。

您要做的就是这样导入它:

    use Carbon\Carbon;

然后我们可以看到通过这种依赖关系我们将做什么,我们只需创建一个时间,然后根据持续时间向其添加分钟,这就是您想要的。

    $start_time = Carbon::createFromTime(9, 0, 0);  // hours, minutes, seconds
    $end_time   = Carbon::createFromTime(21, 0, 0);

    $time       = $start_time;
    $time_slots = array();

    while($time < $end_time){
       $time = $time->addMinutes(30);
       $time_slots[] = $time;
    }

此数组将具有您想要的时隙,您可以随意操作它们。

您也可以在下面查看此链接:

文档:https://github.com/briannesbitt/Carbon

Carbon的字符串格式:http://carbon.nesbot.com/docs/#api-formatting

答案 1 :(得分:1)

    $starttime = '9:00';  // your start time
    $endtime = '21:00';  // End time
    $duration = '30';  // split by 30 mins

    $array_of_time = array ();
    $start_time    = strtotime ($starttime); //change to strtotime
    $end_time      = strtotime ($endtime); //change to strtotime

    $add_mins  = $duration * 60;

    while ($start_time <= $end_time) // loop between time
    {
       $array_of_time[] = date ("h:i", $start_time);
       $start_time += $add_mins; // to check endtie=me
    }

    $new_array_of_time = array ();
    for($i = 0; $i < count($array_of_time) - 1; $i++)
    {
        $new_array_of_time[] = '' . $array_of_time[$i] . ' - ' . $array_of_time[$i + 1];
    }