为iCalendar生成RFC-2445 VTIMEZONE组件

时间:2013-07-24 14:41:17

标签: ruby-on-rails ruby icalendar

我目前正试图理解使用iCalendar gem实现VTIMEZONE组件没有太大成功。

我正在生成一个ics格式的事件日历,不幸的是,在Google日历中导入事件时(例如),由于生成的日历中缺少VTIMEZONE组件,我的日期和时间错误。

写下VTIMEZONE组件纯文本并不是很困难,但我希望根据我在应用程序中设置的ActiveSupport :: TimeZone动态生成。

我探索了几个没有成功的线索。我越来越接近使用ActiveSupport :: TimeZone.find_tzinfo()方法获取TZInfo对象。但是,如何获得声明Daylight和Standard VTIMEZONE组件所需的各种组件?

是否存在任何宝石,或者我可以使用TZInfo本地执行此操作。通过我能找到的所有ruby文档并没有多大帮助。任何建议,领导都是受欢迎的。

1 个答案:

答案 0 :(得分:0)

没关系,icalendar中有一些东西可以做到这一点。 https://github.com/icalendar/icalendar/blob/master/lib/icalendar/tzinfo.rb

第一次没有深入挖掘。

require 'icalendar/tzinfo'

estart = DateTime.new(2008, 12, 29, 8, 0, 0)
tstring = "America/Chicago"
cal = Calendar.new

tz = TZInfo::Timezone.get(tstring)
timezone = tz.ical_timezone(estart)
cal.add(timezone)

cal.event do
  ...
end

cal.to_ical