【问题标题】:Finding the calendar date of an ongoing event when the start-date and weekday are known在已知开始日期和工作日的情况下查找正在进行的事件的日历日期
【发布时间】:2014-10-22 00:26:29
【问题描述】:

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

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

一个例子:

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

【问题讨论】:

  • 日期如何存储在数据库中?时间戳或日期或...?请粘贴您尝试过的东西,您可能一直在正确的方向,但只是在路上犯了一些错误..

标签: php mysql date schedule weekday


【解决方案1】:

对于计划中的下一个事件,您可以使用strtotime 函数:

strtotime('2014-09-01 next Sunday');

并使用返回的 UNIX 时间。

但是要完全解决您的问题,可以有很多方法。恕我直言,strtotime 在for 循环中使用如果按需计算会给您带来很大的开销。如果您将日程表存储在数据库中,那么生成日期并在编辑时重新生成它们可能是最简单的解决方案。

另一方面,日期是头疼的,所以计算所有场合的算法可能要大得多。如果$firstDate = $startDate 或者如果事件每周发生一次,则可以使用从结果日期与第一个日期的差异计算的间隔,然后只需添加 7 天。

发布更多详细信息或您的解决方案以找出错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 2016-01-08
    相关资源
    最近更新 更多