我正在尝试创建一个每周循环的独特重复事件的时间表(每个事件都有唯一的标识符,每周重复一次)。
除了收集有关每个活动的其他信息之外,我还会收集每个活动的工作日以及活动开始和结束的日期(日历日期)。
一个例子:
Event: Go to gym (the event I plan to do once a week)
Day of Week: Sunday (day of week event will occur (every Sunday))
Start Date: 2014-09-01 (happens to be a Monday)
End Date: 2015-08-31 (...)
目的是编写一个脚本,该脚本可以处理任意多个事件及其各自的工作日/开始/结束日期,并重新创建描述每个事件将发生的未来日历日期的日历。
So the first date I should see scheduled to go to the gym will be:
2014-09-07
because this is first Sunday following the start date.
总结一下,我正在收集每个活动的工作日以及开始和结束日期。如何将这些数据解析为事件列表,列出事件未来的重现日期?
请记住,一周中的不同日期会发生大量事件,并且会有不同的开始/结束日期。
感谢所有阅读和回复的人。
尝试:
SQL: grouping, different select statements, and stuff
PHP: stuff, date/time stuff, and stuff stuff
答案 0 :(得分:0)
对于计划中的下一个活动,您可以使用strtotime
功能:
strtotime('2014-09-01 next Sunday');
并使用返回的UNIX时间。
但是要完全解决您的问题,可以有很多方法。恕我直言,strtotime
周期中使用的for
如果按需计算,可能会给您带来很大的开销。如果您将计划存储在数据库中,也许最简单的解决方法是生成日期并在编辑时重新生成它们。
另一方面,日期是头疼,所以计算所有情况的算法可能会大得多。您可以使用根据第一个日期的结果日期差异计算的时间间隔$firstDate = $startDate
,或者每周发生一次事件,然后再添加7天。
发布更多详情或解决方案,以发现错误。