我有一个使用较新的 PHP DateTime 类的日历应用程序。我有一种处理重复事件的方法,但它看起来很老套,我想看看你们是否有更好的想法:
- 我有一个从 2009 年 11 月 16 日(2009 年 11 月 16 日)开始的周期性活动
- 每3天发生一次
- 该事件将无限期重复
假设用户查看 3100 年 12 月的日历 - 该事件应该像往常一样每 3 天显示一次。问题是 - 我如何计算那个月的那些天?
==========================================
这就是我基本上是这样做的,但我知道我错过了一些更容易的东西:
- 我计算正在查看的月初(3100 年 12 月 1 日)和存储为 $daysDiff 的事件开始日期(2009 年 11 月 16 日)之间的天数差异
- 我减去模数,这样我从一开始就得到了 3 天的系数: $daysDiff - ($daysDiff % 3)
- 为了争论,假设给我 3100 年 11 月 29 日作为日期。
- 然后我重复添加 3 天到该日期,直到我在 3100 年 12 月内获得所有日期
我的主要问题来自第 1 步。 PHP DateInterval::date_diff 函数不计算天数差异。它会给我几年、几个月和几天的时间。然后,我必须捏造这些数字,以获得 3100 年 12 月左右的估计日期。 2009 年 11 月 16 日 +(1090 年 * 365.25 天)+(9 个月 * 30.5 天)+ 15 天
当你真正进入 9999 年这样的未来时,这个估计可能会相差一个月,然后我必须减去很多 3 天的间隔才能到达我需要的地方。