我正在尝试创建一个每周循环一次的独特的重复事件的时间表(每个事件将具有唯一的标识符并每周重复)。
除了收集有关每个事件的其他信息外,我还将收集每个事件发生的工作日以及事件开始和结束的日期(日历日期)。
一个例子:
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 (...)
目的是编写一个脚本,其中包含任意多个事件及其各自的工作日/开始/结束日期,并重新创建一个日历,描述每个事件将发生的 future 日历日期。
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.
总而言之,我正在收集每个事件的工作日以及开始和结束日期。如何将这些数据解析为能够输出事件 future 再次发生日期的列表的内容?
请记住,一周中的不同日子将会发生大量事件,并且具有不同的开始/结束日期。
感谢所有阅读并回复的人。
尝试过:
SQL: grouping, different select statements, and stuff
PHP: stuff, date/time stuff, and stuff stuff
最佳答案
对于日程中的下一个事件,您可以使用 strtotime
函数:
strtotime('2014-09-01 next Sunday');
并使用返回的 UNIX 时间。
但是要彻底解决您的问题,可以有很多方法。恕我直言,如果按需计算,for
循环中使用的 strtotime
会给您带来很大的开销。如果您将时间表存储在数据库中,也许这将是生成日期并在编辑时重新生成它们的最简单的解决方案。
另一方面,日期是令人头疼的事情,因此计算所有场合的算法可能会更大。如果$firstDate = $startDate
,或者如果事件每周发生一次,则可以使用根据结果日期与第一次日期的差异计算的间隔,然后只需添加 7 天即可。
发布更多详细信息或您的解决方案以查找错误。
关于php - 在已知开始日期和工作日的情况下查找正在进行的事件的日历日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25543761/