0

我目前正在尝试使用iCalendar gem来理解 VTIMEZONE 组件的实现,但没有取得多大成功。

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

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

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

是否存在任何 gem,或者我可以使用 TZInfo 本地完成它。浏览我能找到的所有 ruby​​ 文档并没有多大帮助。欢迎任何建议,线索。

4

1 回答 1

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
于 2013-07-24T16:34:26.317 回答