我正在尝试在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
....等
此外,我不想在数据库中显示时间与约会重叠的时段。
答案 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];
}