我有一个数据库,它保存以下格式的事件:
时间表
id
show_id
starttime - datetime
endtime - datetime
repeatuntil - datetime
repeat - int
nthdayofmonth - int
repeatmultiple - int
show_id保存所存储的节目的id号。
节目可以针对不同的周期性或不同的日期/时间变化存储多次。
开始时间、结束时间和重复时间对于它们的作用有点明显
repeat是重复的类型:
1 - hourly
2 - daily
3 - weekly
4 - monthly
5 - yearly
无论是否需要或将要使用,我都不是100%repeatmultiple是当事件需要每隔一周或每隔一个月重复时使用的,依此类推…
我一直在努力的是计算下一个事件何时发生的代码,我尝试了互联网和stackoverflow的各种解决方案,但仍在努力。大多数时候,我的代码都会陷入无限循环,无法计算出下一个事件的正确日期。
如果有人能够帮助编写一个函数,该函数可以循环找到下一次事件发生的时间,我将非常感谢这些帮助,因为我感到非常沮丧,而且离我开始的时候不远了。
我认为您可以通过描述这里真正需要的两个功能来实现这一点。
首先,您需要一种计算给定Show
将执行的下一个DateTime的方法。这与任何其他Show
无关,与先出现的内容无关。您需要一个方法,在给定starttime, endtime, etc
条件的情况下,该方法将计算此Show
下次执行的时间。
一旦您能够确定任何给定的Show
将在何时执行,您就可以继续确定哪个Show
将在下一步执行。你可以在数据库中循环,计算下一次并存储最快的。。。或者甚至串行化每个Show
的Next DateTime并查询数据库中最小的。