php - 在已知开始日期和工作日的情况下查找正在进行的事件的日历日期

标签 php mysql date schedule weekday

我正在尝试创建一个每周循环一次的独特的重复事件的时间表(每个事件将具有唯一的标识符并每周重复)。

除了收集有关每个事件的其他信息外,我还将收集每个事件发生的工作日以及事件开始和结束的日期(日历日期)。

一个例子:

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/

相关文章:

php - LinkedIn API OAuth 刷新 token

php - 如何防止使用 Enter 键提交多个表单?

php - php中如何对评论的评论进行整理

mysql - 字符串和整数的严格匹配

cocoa - 比较日期,警告从独特的 Objective-C 类型传递参数之一 'compare:'

php - 如何使用 Twig 日期以中文文本显示星期几?

PHP MySQL 购物车麻烦

php - 显示来自同一 mysql 列的两个单独值的问题

mysql - LEFT JOIN - 缩小范围

java - java.util.Date 的有效范围?