我正在使用 asp mvc 3、jquery full calendar、ms sql sever 2008 和 c#。
我想知道是否有人知道如何制作重复发生的事件?
我不确定如何制作它们。
例如,在谷歌日历中,您可以每年重复一次约会。我怀疑他们在数据库中生成了 X 次约会。
我想知道如何在我的数据库中拥有一行,并以某种方式知道在需要时调用它。
Google 日历和 Outlook 也有很多重复选项,例如在第一个月、上个月重复等。
是否有任何库构建具有此功能?还是我必须从头开始制作?
附言
我在共享主机上,因此解决方案必须在有限的权限下工作。
最佳答案
生成一个事件的所有可能重复(理论上)会用用户很可能永远不会看到的事件填满您的存储空间(祝贺您 999,999,999,999,999,999,999 岁生日!)。
这需要更多的工作,但解决方案基本上是存储一个(或多个)重复规则表,您在构建日历时将其链接到日历条目:
“对于显示的一周中的每一天,检查那些天重复的事件” “对于显示的月份的每个星期,检查在那些星期内重复的事件” “一年中的每个月”,等等......
您需要进行多少次检查取决于您想要重复的类型(和持续时间)。
至于抑制事件,这是另一个表格,列出了必须抑制的日期/时间点。 "如果显示星期一,则显示所有在月份重复的事件,除了抑制表中列出的事件"
评论跟进:
那么,您将拥有标准的日历条目表来存储核心信息。日期/时间等...然后至少有两个其他表来存储重复信息。一个存储你的重复规则。 “每个星期一”、“每个月的第一天”、“每年”等...,以及链接日历条目和规则之间的第三个表
所以:
calendar entries table <---> link table <---> repeat rules table
查询将是构建事物的问题,以便针对您正在考虑的日期,出现适当的规则并为您提供要显示的日历条目的 ID。如果您执行一个花哨的查询,根据您传入的日期动态链接到适当的规则,可能会变得丑陋。
关于c# - 如何创建周期性日历事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4949552/