我正在尝试利用Google Calendar(和Google Calendar API)进行简单的预定。我使用PHP,MySQL和google-api-php-client。我正在寻找一种算法或伪代码来查找空闲时间段。
我的日历上有繁忙时间的事件,例如营业时间以及当前约会。通过两个函数(Events:list和Freebusy:query),我能够检索到事件的开始和结束时间。以下是今天的事件列表示例,起始时间为2016-02-19T01:00:00-07:00,终止时间为2016-02-19T23:00:00-07:00(所有内容均为当天)。
营业时间从12:00am至11:00am
开始:"2016-02-19T00:00:00-07:00"
结束:"2016-02-19T11:00:00-07:00"
1:30pm至2:30pm的约会
开始:"2016-02-19T13:30:00-07:00"
结束:"2016-02-19T14:30:00-07:00"
5:00pm至7:00pm的约会
开始:"2016-02-19T17:00:00-07:00"
结束:"2016-02-19T19:00:00-07:00"
9:00pm至11:00pm的约会
开始:"2016-02-19T21:00:00-07:00"
结束:"2016-02-19T23:00:00-07:00"
基于此示例事件集,我的空闲时间段是:上午11:00至下午1:30,下午2:30至下午5:00,晚上7:00至9:00和晚上11:00至凌晨12:00。
- 我如何以编程方式找到这组时间?
理想情况下,我希望用一个API调用获取给定日的完整事件列表,并解释/处理该列表,而不是进行许多带有特定起始和终止时间的调用,这将为我提供所需信息,但效率非常低。
- 在找到该集之后,我如何以30分钟的间隔显示结果,即可用的约会开始时间为:
11:00、11:30、12:00、12:30、1:00、2:30、3:00、3:30、4:00、4:30、9:00、9:30、10:00、10:30、11:00、11:30
我很难理解如何处理日期/时间数据集。
这是一张Google日历的图片。所涉及的日期为2016年2月19日。谢谢您的帮助。任何由此讨论产生的资源都将被发布供参考。