【问题标题】:Recurring Calendar Events that don't expire不会过期的定期日历事件
【发布时间】:2010-12-17 16:58:10
【问题描述】:

我正在寻找一个 PHP 库(或者更好的 ruby​​ 库)来处理事件日历。我看了几十个,当涉及到重复性事件时,每个都崩溃了。许多要求和结束日期,并且大多数将每个重复事件创建为数据库或其他内容中的条目。

我得到的每一个建议都是使用 Google 日历,它确实可以满足我的需求,但我确信他们不会让我在该服务之上构建服务。

【问题讨论】:

    标签: ruby events calendar recurring


    【解决方案1】:

    关于周期性事件的一件好事是,我们的日历每 28 年循环一次。 即今天是 2010 年 12 月 3 日星期四,所以我知道 28 年后(10226 天)我们将是 2038 年 12 月 3 日星期四。 有了这些知识,您可以在有限的时间段内构建一个发生表,然后将其“移动”到您的目标时间范围...

    【讨论】:

      【解决方案2】:

      RiCal 的重复规则适用于此。他们会做数学计算,具体实施取决于您。

      require 'rubygems'
      require 'ri_cal'
      rule = RiCal::PropertyValue::RecurrenceRule::RecurringMonthDay.new(15)
      p rule.include?(Date.new(2025, 7, 15)) # true
      

      【讨论】:

        【解决方案3】:

        我自己没有使用过Runt,但看起来它可以满足你的需求。

        根据他们的主页:

        Runt 是 Martin Fowler 用超棒的 Ruby 语言实现的选择时间模式。 Runt 提供:

        • 能够定义重复事件 使用简单的类似集合的表达式
        • 一种基于接口的 API,用于创建 任意时间表 事件/对象
        • 使用时间的精确日期类型 积分
        • 日期范围
        • 永恒的和平和/或永生

        【讨论】:

          【解决方案4】:

          听起来您可能不想自己动手,但是设置一个 cron 作业以每 x 分钟检查一次是否有任何必须发送的事件呢?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-03-02
            • 1970-01-01
            • 1970-01-01
            • 2015-12-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多