Ошибка выходного дня с использованием гема Ice_Cube для планирования событий day_of_month

HOLIDAYS = Schedule.new(Date.new(2012,1,1))
HOLIDAYS.add_recurrence_rule Rule.yearly.month_of_year(:october).day_of_month(31)

Когда я проверяю HOLIDAYS.occurs_on? на 31.10.12 я получаю ЛОЖЬ, но когда я проверяю на 30.10.12, я получаю ИСТИНА.

Что я делаю неправильно?

- редактировать - образец прогона

days =  Holidays::HALLOWEEN.occurrences(Date.today)
days.each do |day|
  Log.info day
end
Log.info Holidays::HALLOWEEN.occurs_on?(Date.new(2012,10,31))
Log.info Holidays::HALLOWEEN.occurs_on?(Date.new(2012,10,30))
Log.info Holidays::HALLOWEEN.occurs_on?(Date.new(2013,10,31))
Log.info Holidays::HALLOWEEN.occurs_on?(Date.new(2013,10,30))

Результаты в:

[09:22:15] INFO 2012-10-31 00:00:00 -0400
[09:22:15] INFO 2013-10-31 00:00:00 -0400
[09:22:15] INFO false
[09:22:15] INFO true
[09:22:15] INFO false
[09:22:15] INFO true

1 ответ

Переключившись с Date.new(2012,10,31) на Time.utc(2012,10,31), я смог получить правильное поведение.

Другие вопросы по тегам