2008-10-11 86 views
4

什么是存储重复的时间窗口优选的方法是什么?
例如。如果我有一个日历系统,我需要能够适应每天,每周或每月的周期性事件,那么什么样的时间管理系统最适合?

如何在数据库中这个最能代表?如何存储周期性时间窗口

更多详细信息
这样做的具体目标是提供套的开放时间窗口。一旦我们有了这些时间窗口,代码就需要测试一个到达系统的消息是否属于其中一个时间窗口。

回答

1

这是拖延已久,但许多测试和许多心痛之后,我们决定对某个方案,使这项工作。为了我们系统的需要,我们只需要每周重复一次。最终产品将被设计成这样。

这里是DB模式

id : int(10) 
window_name : varchar(100) 
start_date : datetime 
end_date : datetime 
start_time : time 
duration : int(10) 
timezone: varchar(100) 
monday : tinyint(1) 
tuesday : tinyint(1) 
... 
sunday : tinyint(1) 
  1. 每一个“窗口”的时间将有一组开始日期,结束日期,开始时间和持续时间。
  2. 窗口将在开始日期的打开和启动时间和运行“持续时间”秒
  3. 窗口将只打开指定的星期几

这将允许Windows的唯一系统每周重复打开和关闭,并且还有可能跨越第二天早上的窗户。我相信有更复杂的系统可以实现循环窗口,但我们正在寻找灵活而快速的方法,并且不需要每月重复发生的事件或每年的事件。

1

我会创造条件,保持记录复发的每种类型的日历系统支持的RecurrenceType表。 CalendarEvents表中的每个事件都将具有对RecurrenceType表中的ID的引用。

我将不得不在将举行当计算下一个日期将被给定当前或起始日期或检索接下来的N个日期为阵列的业务逻辑的代码RecurrenceRules对象。

大多数复发逻辑很可能是编码关闭它是基于RecurrenceType表的ID枚举值。除非是非常简单的日历系统,否则我会惊讶的发现,如果您可以将其全部数据驱动出来,

希望有所帮助。这听起来像一个有趣的项目。

相关问题