0

我有一个数据库,其中包含以下格式的事件:

时间表

id  
show_id
starttime - datetime
endtime - datetime
repeatuntil - datetime
repeat - int
nthdayofmonth - int
repeatmultiple - int

show_id 保存所存储的节目的 ID 号。

可以针对不同的重复或不同的日期/时间变化多次存储节目。

starttime、endtime 和 repeatuntil 的作用有点明显。

repeat 是 repeat 的类型:

1 - hourly
2 - daily
3 - weekly
4 - monthly
5 - yearly

nthdayofmonth 不是 100% 是否需要或将使用 repeatmultiple 用于每隔一周或每隔一个月重复一次事件时,依此类推......


我一直在苦苦挣扎的是计算下一个事件何时发生的代码,我尝试了来自互联网和 stackoverflow 的各种解决方案,但仍在苦苦挣扎。大多数情况下,我的代码会陷入无限循环,无法计算出下一个事件的正确日期。

如果有人能够帮助编写一个可以循环查找下一次事件发生的函数的编码,我将非常感谢那里的帮助,因为我感到非常沮丧,而且距离我开始时的距离也不远了。

4

1 回答 1

0

我认为你可以通过描述你在这里真正需要的两个功能来解决这个问题。

首先,您需要一种计算给定 Show将执行的下一个 DateTime 的方法。这与任何其他的Show无关,与先发生的事情无关。您需要一种方法,在给定starttime, endtime, etc条件的情况下,该方法将计算下一次Show执行的时间。

一旦您能够确定任何给定的Show执行时间,您就可以继续确定接下来执行哪个 Show。您可以遍历数据库,计算 Next 时间并存储最快的...甚至为 each 序列化 Next DateTime Show,并查询数据库中的最小值。

于 2011-06-13T19:40:14.153 回答