我正在构建一个日历网站(ASP.NET MVC)应用程序(想想outlook的简单版本),我想开始支持重复出现的日历事件(每月,每年等)
现在我正在存储我的实际日期,但我想弄清楚是否重复,是否有意义继续存储日期(有一些明显的截止),或者我应该存储重复选项并在运行中生成日期.
它让我思考Outlook,谷歌邮件等是如何做这个或任何其他支持重复日历项目的服务.
对此有什么建议吗?
是否存在用于存储定期或重复日期的已发布数据结构?可以处理的东西:
我认为cron内部数据结构可以处理#1,#4,#5(两个规则),也许#2,但我还没有看过它.MS Outlook和其他日历似乎能够处理前五个,但我没有那个源代码.
我知道有关重复发生的事件的问题很常见,但我无法找到一个能够回答这个特定问题的问题,而不是那些与日历应用程序有关的重复事件.主要区别在于我们的应用程序中的事件.只会在报告中或通过他们自己而不是以日历格式出现,尽管在许多方面它们非常相似,可能只是与日历相关的行李较少.
与日历应用程序类似.事件可以一次性发生,也可以重复发生,例如每个星期四或每个月的第一个星期一,直到将来某个预先设定的时间.
事件存储在事件表中,该事件表包含开始和结束日期以及"重新加密类型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 …
我需要存储一次,每天,工作日,每周,一周中的某些日子,一月中的某些日子,这可能是数字或符号,如每个月的第一个星期一,等等.
有什么建议?要查看的任何代码,数据结构或架构?
我必须存储可以按周,每天或每月组织的预定事件(例如说课时).事件可能发生在每个星期一和星期三,或每月的每个星期四.有没有办法将这些信息存储在符合3NF的RDBMS中?
编辑:这不是作业; 我正和朋友一起为我们自己的教化做点什么,我们想要它在3NF.
具体来说,我正试图在RC教区存储大规模和告白时间的时间表.这些可以在很多方面安排,例如每个星期天的x时间或每个星期二/星期四的不同时间.有时它只是本月的第三个星期五,而其他只在一年一次的某个时间提供.我不仅要存储这些信息,还要查询它,以便我可以快速获得第二天或一周或其他任何时间的可用时间的完整列表.
我认为严格来说3NF并不是一个要求,但是对我们来说它会更容易,而且最好是让它更正确,而不是以后更改我们的架构.
我正在为客户端的 PHP/mySQL 日历应用程序创建规范。必须解决的问题之一是重复发生的事件,其发生率由“每年在 5 月的第一个周末的第一个周末”等规则确定。客户希望能够设置诸如“每三个星期四三月至六月发生”等规则。
客户要求他们有能力定义这些,而不是在接下来的 X 年中用它们预先填充事件发生率表。
是否有任何现有的日历解决方案允许这种基于模式的重复?
是否有任何日历系统基于这样的规则进行查询,而不是在创建或更新重复事件时使用参数在事件表中生成重复事件的发生率?
到目前为止我正在阅读的内容:
一种。 http://martinfowler.com/apsupp/recurring.pdf
湾 http://www.kanzaki.com/docs/ical/recur.html
C。 http://tools.ietf.org/html/rfc5545#page-37
d. http://tools.ietf.org/html/rfc5545#section-3.8.5.3
e. iCal“字段”列表(用于基于 iCal 标准的数据库架构)
G。 http://en.wikipedia.org/wiki/ICalendar#Technical%5Fspecifications
H。 http://muddybranch.thejkgroup.com/2005/01/why-remove-icalendar-recurring-rules/
一世。 构建日历应用程序时,我应该在我的数据库中存储日期或重复规则吗?
注意:这个建议存储重复规则并在 x 个月之前存储基于这些的硬实例。
克。 构建日历应用程序时,我应该在我的数据库中存储日期或重复规则吗?
一世。将您的数据分为两部分:“规范”数据(重复规则)和“服务”(生成的日期;除了重新生成外只读)。如果规范数据发生变化,则在该点重新生成“服务”数据。对于无限重复,保留一定数量的实例并在用完时生成更多实例(例如,如果用户查看他们的 2020 年日历)。
湖 日历重复/重复事件 - 最佳存储方法 独特的答案 w 模式和 SQL
米。 https://github.com/tusharmath/sheql 重复日期的语言
n. https://github.com/tplaner/When 这看起来非常适合基于规则生成日期——包括 RRULE 的