如何计算从上午 8:00 到晚上 8:00 以 15 分钟为间隔的可用时间?
Posted
技术标签:
【中文标题】如何计算从上午 8:00 到晚上 8:00 以 15 分钟为间隔的可用时间?【英文标题】:How to calculate available times in a 15 Minutes Interval from 8:00 am to 8:00 pm? 【发布时间】:2014-01-02 13:42:54 【问题描述】:我想开发一个 ios 应用程序,它可以在上午 8:00 到晚上 8:00 的 15 分钟间隔内为您提供预约时间,条件是您的预约时间为 1 小时 30 分钟。
App 将下载这一次并将它们粘贴到 tableView 中。其他约会的时间(开始、结束时间、持续时间)将存储在 mysql 数据库中。我想用php或者SQL来计算(不知道哪个更好)。
到目前为止,这是我的想法:
function easyfunction($day, $cutter, $open, $closed)
//Create new Array
$frei = array();
//Calculate times for the $frei-Array
for($time = $open; $time > $closed; $time=$time + date_create_from_format('H:i', 0:15);)
array_push($frei, $time);
//MySQL-Request
$connect = mysqli_connect("host", "DB", "Password")or die("Fehler beim Verbinden mit der Datenbank");
mysqli_select_db("Appointments")or die("Database doesnt exist");
$sql = "SELECT * FROM termine WHERE friseuse=$cutter AND date=$day";
$ergebnis = mysqli_query($sql);
while($row = mysqli_fetch_array($ergebnis))
//Write Appointment and duration in variables
$datetime = $row->datetime;
$duration = $row->duration;
//Calculate Ending
$terminende = $datetime + $duration;
// Create Search Array
$search = array();
//Filter all values from $frei
$search = array_search($datumzeit < $frei, $frei);
$search = array_search($ende > $frei , $frei);
unset($frei[$search]);
//Return all times
return $frei;
好吧,这段代码不包含顶部的给定条件,但我想添加它,如果我可以构建一个工作代码。
【问题讨论】:
我希望那不是您的真实用户名和密码。 Find first free date in agenda 的可能重复项 谢谢开发者空居民!我会在几天内尝试一下! :-) 嗯,不完全是这样。我想要只有一天的时间。我必须替换 NOW() 吗?对不起,我只知道 SQL 的基础知识。 【参考方案1】:在 SQL 中,我计算了时间间隔(我已根据您的要求进行了修改)
declare @time datetime
declare @Etime datetime
declare @Interval datetime
set @time='2013-12-18 08:00:00.000'
While @time<'2013-12-18 16:00:00.000'
Begin
set @Etime=convert(varchar(25), dateadd(mi,90,@time))
set @Interval = convert(varchar(25), dateadd(mi,15,@Etime))
select @time as StartTime, @Etime as EndTime, @Interval as Interval
set @Time = @Interval
End
在我的项目中,我将其用作
declare @time datetime
declare @Etime datetime
declare @Interval datetime
set @time='2013-12-18 08:00:00.000'
IF OBJECT_ID('dbo.timetable', 'U') IS NOT NULL
DROP TABLE dbo.timetable
create table timetable (StartTime datetime, EndTime datetime, Interval datetime)
While @time<'2013-12-18 16:00:00.000'
Begin
set @Etime=convert(varchar(25), dateadd(mi,90,@time))
set @Interval = convert(varchar(25), dateadd(mi,15,@Etime))
insert into timetable values(@time, @Etime, @Interval)
set @Time = @Interval
End
以后
select * from timetable
希望对你有帮助
【讨论】:
以上是关于如何计算从上午 8:00 到晚上 8:00 以 15 分钟为间隔的可用时间?的主要内容,如果未能解决你的问题,请参考以下文章