iCalendar形式のファイルからRRULEを考慮してスケジュールデータを取得する方法
2011年のPHPMatsuri ぶりにiCalendar形式とか触った
icalendar/recurrence
を使うのがポイント
require 'date'
require 'tzinfo'
require 'icalendar'
require 'icalendar/recurrence'
url = 'https://mozorg.cdn.mozilla.net/media/caldata/JapanHolidays.ics'
result = Icalendar.parse(client.get_content(url), true)
result.events.each do |event|
if event.rrule == []
puts Date.parse(event.dtstart.to_s)
else
event.occurrences_between(start_date, end_date).each do | e |
puts Date.parse(e.start_time.to_s)
end
end
end