相关疑难解决方法(0)

在日历应用程序中为重复事件建模的最佳方法是什么?

我正在构建一个需要支持重复事件的组日历应用程序,但是我提出来处理这些事件的所有解决方案看起来都像是一个黑客.我可以限制前方可以看到的距离,然后立即生成所有事件.或者我可以将事件存储为重复,并在日历上向前看时动态显示它们,但如果有人想要更改特定事件实例的详细信息,我将不得不将它们转换为正常事件.

我确信有更好的方法可以做到这一点,但我还没有找到它.对重复事件建模的最佳方法是什么,您可以在其中更改特定事件实例的详细信息或删除特定事件实例?

(我正在使用Ruby,但请不要让这限制你的答案.如果有一个特定于Ruby的库或其他东西,那么,这很有用.)

ruby algorithm recurrence calendar data-modeling

213
推荐指数
8
解决办法
6万
查看次数

重复事件,SQL查询

我知道有关重复发生的事件的问题很常见,但我无法找到一个能够回答这个特定问题的问题,而不是那些与日历应用程序有关的重复事件.主要区别在于我们的应用程序中的事件.只会在报告中或通过他们自己而不是以日历格式出现,尽管在许多方面它们非常相似,可能只是与日历相关的行李较少.

与日历应用程序类似.事件可以一次性发生,也可以重复发生,例如每个星期四或每个月的第一个星期一,直到将来某个预先设定的时间.

事件存储在事件表中,该事件表包含开始和结束日期以及"重新加密类型ID".如果'reurrency type'为'None',则开始日期和结束日期将相同.事件表将id保存到一个单独的表中,该表保存事件类型名称,例如'Meeting'或'Weekly report'

还有一个表格,其中包含"重复种类型"列表,例如"不再发生","每个星期一","每月的第一个星期一"和"月的最后一个星期六".

为了使查找更容易,另一个表包含1960年至2060年的日期列表以及有关每个日期的相关信息,例如是否是星期一,以及星期一的星期几.

这允许查找如下:

SELECT DISTINCT(e.eventid),n.nameid,n.firstname,n.lastname,d.dt,r.recurring
FROM dates d 
LEFT JOIN recurringtypes r
/* if event recurring every week E.g. 'Every Monday' */
ON (r.rectypeid BETWEEN 2 AND 8 AND r.day = d.dow) 
/* if event recurring every month E.g. 'First Monday, every month' */
OR ((r.rectypeid BETWEEN 9 AND 36) AND r.day = d.dow AND r.occurrence = d.occurrence) 
/* if event recurring every last week of month E.g. 'Last Monday, every month' */
OR (r.rectypeid …

mysql sql recurring-events rfc5545

7
推荐指数
1
解决办法
7511
查看次数