如何创建定期日历活动?

cho*_*bo2 8 c# sql-server reminders google-calendar-api asp.net-mvc-3

我正在使用asp mvc 3,jquery完整日历,ms sql sever 2008和c#.

我想知道是否有人知道如何制作重复活动?

我不确定如何制作它们.

例如,在谷歌日历中,您可以永久地重复预约.我怀疑他们在数据库中生成X次约会.

我想知道如何在我的数据库中有一行,并且知道如何在需要时调用它.

谷歌日历和Outlook也有很多重复的选项,如重复在1月,上个月等.

是否有任何库构建有这个?或者我是从头开始做的?

PS

我在共享主机上,因此解决方案必须使用有限的权限.

Mar*_*c B 9

生成所有可能的事件重复(理论上)将填充您的存储空间,这些事件很可能永远不会被用户看到(祝贺您的999,999,999,999,999,999,999生日!).

这需要更多的工作,但解决方案是基本上存储一个表(或多个表)的重复规则,您可以在构建日历时链接日历条目:

"对于每周显示的每一天,检查那些日子重复的事件""显示当月的每个星期,检查那些周内重复的事件""一年中的每个月",等等. .

您需要做多少这些检查取决于您需要多少种类型(和持续时间)的重复.

至于压抑事件,这是另一个列出日期/时间点的表,这些点必须被压制."如果显示星期一,显示所有在几个月内重复的事件,除了在抑制表中列出的事件"

评论后续:

那么,你有标准的日历条目表来存储核心信息.日期/时间等...然后至少有两个其他表来存储重复信息.存储重复规则的一个."每个星期一","每月的第一天","每年"等...,以及在日历条目和规则之间链接的第三个表

所以:

 calendar entries table  <--->  link table  <--->  repeat rules table
Run Code Online (Sandbox Code Playgroud)

查询将是一个建立事物的问题,以便在您考虑的日期,出现适当的规则并为您提供要显示的日历条目的ID.如果您根据您传入的日期动态链接到相应的规则,可能会变得丑陋.