如何创建定期日历活动?

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

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

我不确定如何制作它们。

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

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

此外,谷歌日历和Outlook有很多重复选项,如重复在第1个月,上个月等。

有没有这样的库构建? 或者我是从头开始做的?

PS

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

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

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

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

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

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

评论后续:

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

所以:

calendar entries table <---> link table <---> repeat rules table 

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

由于您已包含#google-calendar标记,因此我猜这就是您正在使用的内容。 Google日历使用REST和JSON调用。 这是一个例子:

 { "summary": "Daily project", "start": { "dateTime": "2011-12-12T10:00:00", "timeZone": "Europe/Zurich" }, "end": { "dateTime": "2011-12-12T11:00:00", "timeZone": "Europe/Zurich" }, "recurrence": [ "RRULE:FREQ=DAILY;COUNT=5" ] } 

这将创建一个名为“每日项目”的事件,每天从上午10点到上午11点发生,并连续5天重复。

由于您使用的是C#,因此您还可以使用Google API(v3)Event对象。 这具有创建递归事件所需的所有属性。 但是,您仍然应该查看JSON结构,以确定如何形成递归规则。

如果您不使用Google日历,您仍然可以使用其API作为指南:只需为重复事件而非实际实例创建规则。 根据单个事件(没有递归规则)和重复的事件规则,使用线程或计时器每分钟查询一次新事件的数据库。

每当有人问这样的问题时,就会出现预订“在SQL中开发面向时间的数据库应用程序”的链接。 它可以合法地作为免费PDF和亚马逊使用 。