Skip to content

Commit 14da4a5

Browse files
epologeejankeesvw
andcommitted
Alternative time zone lookup using strftime, to complement Rails mapping
Co-authored-by: Jankees van Woezik <[email protected]>
1 parent 957b58e commit 14da4a5

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

lib/ice_cube/parsers/ical_parser.rb

+16-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ def self.schedule_from_ical(ical_string, options = {})
55
ical_string.each_line do |line|
66
(property, value) = line.split(":")
77
(property, tzid) = property.split(";")
8-
zone = Time.find_zone(tzid) if tzid.present?
8+
zone = find_zone(tzid) if tzid.present?
99
case property
1010
when "DTSTART"
1111
value = { time: value, zone: zone } if zone.present?
@@ -92,5 +92,20 @@ def self.rule_from_ical(ical)
9292

9393
Rule.from_hash(params)
9494
end
95+
96+
private
97+
98+
def self.find_zone(tzid)
99+
(_, zone) = tzid&.split("=")
100+
begin
101+
Time.find_zone!(zone) if zone.present?
102+
rescue ArgumentError
103+
(rails_zone, _tzinfo_id) = ActiveSupport::TimeZone::MAPPING.find do |(k, _)|
104+
Time.find_zone!(k).now.strftime("%Z") == zone
105+
end
106+
107+
Time.find_zone(rails_zone)
108+
end
109+
end
95110
end
96111
end

0 commit comments

Comments
 (0)