我正在寻找一个 PHP 库(或者更好的 ruby 库)来处理事件日历。我看了几十个,当涉及到重复事件时,每个都崩溃了。许多要求和结束日期,并且大多数将每个重复事件创建为数据库或其他内容中的条目。
我得到的每一个建议都是使用谷歌日历,它确实可以满足我的需求,但我相信他们不会让我在服务之上构建服务。
我自己没有使用过Runt,但它看起来可能会做你想做的事。
根据他们的主页:
Runt 是 Martin Fowler 用超棒的 Ruby 语言实现的选择时间模式。Runt 提供:
RiCal 的重复规则适用于此。他们做数学,实施将取决于你。
require 'rubygems'
require 'ri_cal'
rule = RiCal::PropertyValue::RecurrenceRule::RecurringMonthDay.new(15)
p rule.include?(Date.new(2025, 7, 15)) # true
听起来您可能不想自己动手,但是设置一个 cron 作业以每 x 分钟检查一次是否有必须发送的事件呢?
关于经常性事件的一件好事是我们的日历每 28 年循环一次。即今天是 2010 年 12 月 3 日星期四,所以我知道在 28 年(10226 天)后,我们将是 2038 年 12 月 3 日星期四。有了这些知识,您可以在有限的时间段内建立一个事件表,然后将其“移动”到您的目标时间范围...