Повторяющиеся события календаря, срок действия которых не истек - PullRequest
0 голосов
/ 18 ноября 2009

Я ищу библиотеку в PHP (или еще лучше в ruby) для обработки календаря событий. Я посмотрел десятки из них, и каждый ломается, когда дело доходит до повторяющихся событий. Многие требуют и даты окончания, и большинство создают каждое повторяющееся событие как запись в базе данных или что-то в этом роде.

Каждое предложение, которое я получаю, это использовать календарь Google, который делает именно то, что я хочу, но я уверен, что они не позволят мне создать сервис поверх этого сервиса.

Ответы [ 4 ]

1 голос
/ 18 ноября 2009

Сам не использовал Рунт , но похоже, что он может делать то, что вы хотите.

Согласно их домашней странице:

Runt - это реализация избранных временных шаблонов Мартина Фаулера на супер фантастическом языке Ruby. Рунт обеспечивает:

  • способность определять повторяющиеся события используя простые, подобные множеству выражения
  • интерфейсный API для создания графики для произвольных события / объекты
  • точные типы дат с использованием времени Очки
  • диапазоны дат
  • вечный мир и / или вечная жизнь
1 голос
/ 18 ноября 2009

Правила повторения RiCal будут работать для этого. Они делают математику, реализация будет за вами.

require 'rubygems'
require 'ri_cal'
rule = RiCal::PropertyValue::RecurrenceRule::RecurringMonthDay.new(15)
p rule.include?(Date.new(2025, 7, 15)) # true
1 голос
/ 18 ноября 2009

Звучит так, что вы, возможно, не захотите бросать свои собственные, но как насчет простой установки задания cron, чтобы проверять каждые x минут, есть ли какие-либо события, которые должны быть отправлены?

0 голосов
/ 03 декабря 2010

Одна хорошая вещь, которую нужно знать о повторяющихся событиях, это то, что наш календарь цикличен каждые 28 лет. то есть сегодня четверг 3 декабря 2010 года, поэтому я знаю, что через 28 лет (10226 дней) мы будем четверг 3 декабря 2038 года. Обладая этими знаниями, вы можете построить таблицу событий за ограниченный период времени и просто «переместить» ее в целевой диапазон времени ...

...