gpt4 book ai didi

javascript - 从开始时间到结束时间在 php 中划分 20 分钟很多时间

转载 作者:行者123 更新时间:2023-11-30 09:57:40 25 4
gpt4 key购买 nike

例如 ->

 Start time = 2015-10-21 09:00:00
end time = 2015-10-21 19:45:00

所以按照我的示例 - 开始时间是 上午 9 点到晚上 7-45 点

所以我想要 20 分钟的可能时段。在 PHP 中,例如

9:00 - 9:20,9-20 到 9-40 等。但对于 ex 12:00-12:20 , 2:40 to 2:60 预订则不会包含在此列表中。

我想制作 20 分钟的时段。是的,但它也会过滤 alr

使用 php 中的时差我有开始时间和结束时间。

然后我想检查从开始时间到结束时间有多少个 20 分钟空档

=> 它还会检查是否有一些时间段已经预订然后不考虑

IN SHOT 1 to 2 or 3-5 is break time then it will not consider. 

最佳答案

这将满足您的需求。但数组元素应保留特定格式,以便于计算。

<?php
$start_time = '2015-10-21 09:00:00'; //start time as string
$end_time = '2015-10-21 19:45:00'; //end time as string
$booked = array('12:20-12:40','13:00-13:20'); //booked slots as arrays
$start = DateTime::createFromFormat('Y-m-d H:i:s',$start_time); //create date time objects
$end = DateTime::createFromFormat('Y-m-d H:i:s',$end_time); //create date time objects
$count = 0; //number of slots
$out = array(); //array of slots
for($i = $start; $i<$end;) //for loop
{
$avoid = false; //booked slot?
$time1 = $i->format('H:i'); //take hour and minute
$i->modify("+20 minutes"); //add 20 minutes
$time2 = $i->format('H:i'); //take hour and minute
$slot = $time1."-".$time2; //create a format 12:40-13:00 etc
for($k=0;$k<sizeof($booked);$k++) //if booked hour
{
if($booked[$k] == $slot) //check
$avoid = true; //yes. booked
}
if(!$avoid && $i<$end) //if not booked and less than end time
{
$count++; //add count
$slots = ['start'=>$time1, 'stop'=>$time2]; //add count
array_push($out,$slots); //add slot to array
}
}
var_dump($out); //array out
echo $count ." of slots available";

如果您使用预订的日期时间作为数组,请使用以下代码。

<?php
$start_time = '2015-10-21 09:00:00'; //start time as string
$end_time = '2015-10-21 19:45:00'; //end time as string
$booked = ['2015-10-21 12:20:00','2015-10-21 12:40:00', '2015-10-21 13:00:00','2015-10-21 13:20:00'];
//booked slots as arrays
$start = DateTime::createFromFormat('Y-m-d H:i:s',$start_time); //create date time objects
$end = DateTime::createFromFormat('Y-m-d H:i:s',$end_time); //create date time objects
$time1 = $start;
$count = 0; //number of slots
$out = array(); //array of slots
for($i = $start; $i<$end;) //for loop
{
$avoid = false;
$t1 = date_timestamp_get($i);
$t2 = $t1+(20*60);

for($k=0;$k<sizeof($booked);$k+=2) //if booked hour
{
$st = DateTime::createFromFormat('Y-m-d H:i:s',$booked[$k]);
$en = DateTime::createFromFormat('Y-m-d H:i:s',$booked[$k+1]);

if( $t1 >= date_timestamp_get($st) && $t2 <= date_timestamp_get($en) )
$avoid = true; //yes. booked
}
$slots =[ $i->format('H:i'),$i->modify("+20 minutes")->format('H:i')];
if(!$avoid && $i<$end) //if not booked and less than end time
{
$count++;
array_push($out,$slots); //add slot to array
}
}
var_dump($out); //array out
echo $count ." of slots available";

关于javascript - 从开始时间到结束时间在 php 中划分 20 分钟很多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33256246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com