我有一个数据库,它以下列格式保存事件:
时间表
id
show_id
starttime - datetime
endtime - datetime
repeatuntil - datetime
repeat - int
nthdayofmonth - int
repeatmultiple - int
show_id包含存储的节目的ID号。
可以针对不同的重复或不同的日期/时间变化多次存储节目。
startime,endtime和repeatuntil对于他们的工作有点明显。
重复是重复的类型:
1 - hourly
2 - daily
3 - weekly
4 - monthly
5 - yearly
nthdayofmonth不是100%是否需要或将被使用 当希望每隔一周或每隔一个月重复一次事件时,可以使用repeatmultiple ...
我一直在努力的是计算下一个事件发生时间的代码,我已经尝试过来自互联网和stackoverflow的各种解决方案但仍在努力。大多数时候我的代码在无限循环中结束并且无法计算出下一个事件的正确日期。
如果有人能够帮助编写一个可以循环查找下一次事件发生的函数的编码,我将非常感谢那些帮助,因为我变得非常沮丧,而且从我开始时就没那么多了。
答案 0 :(得分:0)
我认为你可以通过描述你真正需要的两个功能来解决这个问题。
首先,您需要一种计算给定 Show
将执行的下一个DateTime的方法。这与任何其他Show
无关,与首先出现的内容无关。您需要一种方法,根据starttime, endtime, etc
条件,将在下次执行此Show
时计算。
一旦您能够确定何时执行任何Show
,您就可以继续确定接下来将执行哪个 Show
。您可以遍历数据库,计算下一次并存储最快的...甚至为每个Show
序列化Next DateTime,并查询数据库中的最小值。