【发布时间】:2010-12-17 14:34:06
【问题描述】:
我有一个使用较新的 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 天的间隔才能到达我需要的地方。
【问题讨论】: