0

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

我不知道如何在循环中匹配当前日期以查看重复是否已经开始。假设我参加了为期 3 天的“Pickup Silver”活动。我希望从 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]
#";
4

1 回答 1

0

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

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

于 2013-04-23T21:18:29.413 回答