RiCal 未解析美国/丹佛时区信息
我正在解析一个 ical feed,它突然停止解析美国/丹佛时区,其他时区工作。我正在使用 ztinfo gem 和最新的 rical gem。这是显示失败的示例。
require 'tzinfo'
require 'ri_cal'
az = <<AZ
BEGIN:VCALENDAR
PRODID:-//SuperSaaS//Super Schedule//EN
METHOD:PUBLISH
VERSION:2.0
CALSCALE:GREGORIAN
X-WR-CALNAME:Fluid Meeting Space
X-WR-TIMEZONE:America/Phoenix
X-WR-RELCALID:40409
BEGIN:VTIMEZONE
TZID:America/Phoenix
BEGIN:STANDARD
TZOFFSETFROM:-0600
TZOFFSETTO:-0700
DTSTART:19671029T010000
RDATE:19671029T010000
TZNAME:MST
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
UID:[email protected]
DTSTAMP:20110519T195014Z
DTSTART;TZID=America/Phoenix:20110428T120000
DTEND;TZID=America/Phoenix:20110428T130000
SUMMARY:Dusty
DESCRIPTION:Test Meeting
CREATED:20110428T210637Z
LAST-MODIFIED:20110428T210637Z
URL:http://www.supersaas.com/schedule/red27/Fluid_Meeting_Space?year=2011&m
onth=4&day=28
END:VEVENT
END:VCALENDAR
AZ
mst = <<MST
BEGIN:VCALENDAR
PRODID:-//SuperSaaS//Super Schedule//EN
METHOD:PUBLISH
VERSION:2.0
CALSCALE:GREGORIAN
X-WR-CALNAME:Fluid Meeting Space
X-WR-TIMEZONE:America/Denver
X-WR-RELCALID:40409
BEGIN:VTIMEZONE
TZID:America/Denver
BEGIN:DAYLIGHT
TZOFFSETFROM:-0700
TZOFFSETTO:-0600
DTSTART:20110313T030000
RDATE:20110313T030000
TZNAME:MDT
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
UID:[email protected]
DTSTAMP:20110519T192544Z
DTSTART;TZID=America/Denver:20110428T120000
DTEND;TZID=America/Denver:20110428T130000
SUMMARY:Dusty
DESCRIPTION:Test Meeting
CREATED:20110428T210637Z
LAST-MODIFIED:20110428T210637Z
URL:http://www.supersaas.com/schedule/red27/Fluid_Meeting_Space?year=2011&m
onth=4&day=28
END:VEVENT
END:VCALENDAR
MST
def show(vcal)
components = RiCal.parse_string(vcal.strip)
components.each do |cal|
puts cal.events.count
cal.events.each do |e|
puts "UID: #{e.inspect}"
puts "Start: #{e.dtstart} "
puts "End: #{e.dtend} "
puts "******************************"
end
end
end
show(az)
show(mst)
I'm parsing an ical feed which suddenly quit parsing the America/Denver timezone, other timezones work. I'm using the ztinfo gem and latest rical gem. Here's a sample showing the failure.
require 'tzinfo'
require 'ri_cal'
az = <<AZ
BEGIN:VCALENDAR
PRODID:-//SuperSaaS//Super Schedule//EN
METHOD:PUBLISH
VERSION:2.0
CALSCALE:GREGORIAN
X-WR-CALNAME:Fluid Meeting Space
X-WR-TIMEZONE:America/Phoenix
X-WR-RELCALID:40409
BEGIN:VTIMEZONE
TZID:America/Phoenix
BEGIN:STANDARD
TZOFFSETFROM:-0600
TZOFFSETTO:-0700
DTSTART:19671029T010000
RDATE:19671029T010000
TZNAME:MST
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
UID:[email protected]
DTSTAMP:20110519T195014Z
DTSTART;TZID=America/Phoenix:20110428T120000
DTEND;TZID=America/Phoenix:20110428T130000
SUMMARY:Dusty
DESCRIPTION:Test Meeting
CREATED:20110428T210637Z
LAST-MODIFIED:20110428T210637Z
URL:http://www.supersaas.com/schedule/red27/Fluid_Meeting_Space?year=2011&m
onth=4&day=28
END:VEVENT
END:VCALENDAR
AZ
mst = <<MST
BEGIN:VCALENDAR
PRODID:-//SuperSaaS//Super Schedule//EN
METHOD:PUBLISH
VERSION:2.0
CALSCALE:GREGORIAN
X-WR-CALNAME:Fluid Meeting Space
X-WR-TIMEZONE:America/Denver
X-WR-RELCALID:40409
BEGIN:VTIMEZONE
TZID:America/Denver
BEGIN:DAYLIGHT
TZOFFSETFROM:-0700
TZOFFSETTO:-0600
DTSTART:20110313T030000
RDATE:20110313T030000
TZNAME:MDT
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
UID:[email protected]
DTSTAMP:20110519T192544Z
DTSTART;TZID=America/Denver:20110428T120000
DTEND;TZID=America/Denver:20110428T130000
SUMMARY:Dusty
DESCRIPTION:Test Meeting
CREATED:20110428T210637Z
LAST-MODIFIED:20110428T210637Z
URL:http://www.supersaas.com/schedule/red27/Fluid_Meeting_Space?year=2011&m
onth=4&day=28
END:VEVENT
END:VCALENDAR
MST
def show(vcal)
components = RiCal.parse_string(vcal.strip)
components.each do |cal|
puts cal.events.count
cal.events.each do |e|
puts "UID: #{e.inspect}"
puts "Start: #{e.dtstart} "
puts "End: #{e.dtend} "
puts "******************************"
end
end
end
show(az)
show(mst)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我在这里创建了一张票:http://rick_denatale.lighthouseapp.com/projects/30941-ri_cal/tickets/36-you-have-a-nil-object-when-you-didnt -expect-it-dtstart#ticket-36-3
似乎问题是当 ical feed 中没有 STANDARD 组件时,只有 DAYLIGHT。
I created a ticket here: http://rick_denatale.lighthouseapp.com/projects/30941-ri_cal/tickets/36-you-have-a-nil-object-when-you-didnt-expect-it-dtstart#ticket-36-3
Seems the issue is when there is not a STANDARD component in the ical feed, just DAYLIGHT.