代码之家  ›  专栏  ›  技术社区  ›  Addsy

如何处理无限期重复的日期

  •  2
  • Addsy  · 技术社区  · 15 年前

    我正在使用php和mysql在一个网站上实现一个相当简单的日历。我希望能够处理无限期重复的日期,并且不确定最好的方法。

    对于时间有限的重复事件,只需将时间范围内的每个事件添加到我的DB表中,并使用某种形式的递归ID对它们进行分组似乎是有意义的。

    但是,如果事件的重复频率没有限制,那么最好是

    a)在数据库中记录特定的时间段(如未来2年),然后定期检查并随着时间的推移添加新的记录-问题是,如果有人提前3年查看,事件将不会显示出来。

    b)实际上没有每个事件的记录,但是当我在指定的时间段内为事件签入PHP代码时,请计算在此时间段内是否会发生重复事件-问题在于,这意味着对于每个事件没有特定的记录,当我想将其他事件关联到参加那个活动。好像也有点慢

    有人尝试过这些方法吗?如果是的话,结果如何?或者我还缺少其他巧妙的方法吗?

    4 回复  |  直到 15 年前
        1
  •  1
  •   Maxem    15 年前

    我会采用方法B,如果有人添加了一些东西,我会创建一个“真实”的事件条目。

    编辑: 你期望有多少个周期性事件,那会是什么样的周期性事件?(例如:每周一、每两周等)

        2
  •  1
  •   mouviciel    15 年前

    我会为一个重复的事件创建一个单独的记录。然后,如果必须向特定日期添加更多信息,我将为附件创建一个引用重复事件的记录。

        3
  •  1
  •   symcbean    15 年前

    对选项B的第三次投票——理由是只应在有限的时间段(即开始和结束)内查询数据。出于性能方面的考虑,我建议除了存储第一次出现的日期/时间之外,还应保存数据库中最后一次出现的发生次数和频率。

    C.

        4
  •  0
  •   janechii    15 年前

    根据我的经验,生成循环日期并检查特定日期是否在该模式中,这并不是所有性能方面都不好的地方。一年只有365天。10000天已经快30年了。这意味着,在实际场景中,输入/输出的大小相对较小。

    此库可能有帮助(但它是javascript): http://github.com/mooman/recurring_dates