在SQL PHP中重复日历事件

时间:2013-04-23 21:00:18

标签: 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
##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]
#";

1 个答案:

答案 0 :(得分:0)

我建议你看看iCalendar RRULEs。如果你正在做一个非常基本的重复发生模式,那么就不要费心了,因为它非常大但非常全面。这至少可以为您提供一个关于如何构建数据以及需要存储的内容的标准。具体来说,在您的情况下,听起来您需要存储重复的开始和结束日期以及事件的开始日期和长度。由此,您可以推断出当前日期是否与重复日相交。

要记住的是日历计算实际上非常困难。你需要考虑时区差异,夏令时(不仅是在哪些日子,而是如何处理额外或缺少的小时),闰年等。如果考虑所有异常值,即使是看似简单的事情也会变得非常复杂的情况。