c# - 如何创建周期性日历事件?

标签 c# sql-server asp.net-mvc-3 google-calendar-api reminders

我正在使用 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/

相关文章:

c# - 防止 Windows 窗体 datagridview 在单元格编辑后更改行

c# - 如何对远程存储过程进行单元测试

javascript - 替换 ASP.NET MVC 3 应用程序中的 jQuery

sql-server - 在 UPDATE 中使用内联 XML 变量的 SQL 总是获取 null

SQL 服务器 : how to order by using a starting value

ajax - 即使模型无效,ASP.NET MVC "Ajax.BeginForm"也会执行 OnSuccess

asp.net-mvc-3 - 没有为此对象定义无参数构造函数 MVC3

c# - 如何通过代码生成WPF控件

c# - C#中如何发现Mutex被获取?

c# - 如何处理 Entity Framework 中的陈旧缓存?