在sqlphp中重复日历事件

在sqlphp中重复日历事件,php,sql,Php,Sql,我有一个循环,循环给定月份的所有日子,一个人可以从开始日期/时间创建事件并指定结束日期/时间。我正在合并,事件可以每xx天、xx月或xx年重复一次 我不知道如何匹配循环中的当前日期,以查看重复是否已开始。 假设我有一个为期3天的活动。 我希望从2号开始每7天发生一次。日历应自开始日期/时间起每7天显示一次此事件。从第2天、第9天、第16天、第30天等开始 #Loop starts and math calulates the current unix start of each day ##Th

我有一个循环,循环给定月份的所有日子,一个人可以从开始日期/时间创建事件并指定结束日期/时间。我正在合并,事件可以每xx天、xx月或xx年重复一次

我不知道如何匹配循环中的当前日期,以查看重复是否已开始。 假设我有一个为期3天的活动。 我希望从2号开始每7天发生一次。日历应自开始日期/时间起每7天显示一次此事件。从第2天、第9天、第16天、第30天等开始

#Loop starts and math calulates the current unix start of each day
##The SQL QUERY to lookup if there are any events starting or ending on this day 
#$SQL =" 
#SELECT
# Name as OutputTitle,
# ID
# FROM
#safe_calendar
#WHERE
#AutherID = '[AccountID]'
#AND
#AutherTable = '[TableName]'
#AND
#(UnixFrom - 86400) <  [UnixThisDay] 
#AND
#UnixEnd >= [UnixThisDay]
#";

我建议看一看。如果你正在做一个非常基本的重复模式,那么就不用担心大部分的重复模式,因为它非常大,但是非常全面。这至少会给你一个好主意,一个标准,关于如何构造你的数据和你需要存储什么。具体来说,在您的情况下,听起来您需要存储重复的开始和结束日期以及事件的开始日期和长度。由此,您可以推断当前日期是否与重复日期相交


需要记住的是,日历计算实际上相当困难。您需要考虑时区差异、夏令时,不仅要考虑哪天,还要考虑如何处理额外或缺失的小时、闰年等。如果将所有异常情况考虑在内,即使看似简单的事情也可能变得相当复杂。

感谢您的回复,我不知道如何将iCalendar RRULEs应用到我的应用程序中。我知道这真的很复杂,我只是计算出一年中每小时、一周、一周的秒数。但它会发布错误的数据