diff --git a/lib/ice_cube/parsers/ical_parser.rb b/lib/ice_cube/parsers/ical_parser.rb index 09a44e2d..6f795131 100644 --- a/lib/ice_cube/parsers/ical_parser.rb +++ b/lib/ice_cube/parsers/ical_parser.rb @@ -25,11 +25,11 @@ def self.schedule_from_ical(ical_string, options = {}) end def self._parse_in_tzid(value, tzid) - t = Time.parse(value) + time_parser = Time if tzid - t = t.in_time_zone(ActiveSupport::TimeZone[tzid.split("=")[1]]) + time_parser = ActiveSupport::TimeZone.new(tzid.split('=')[1]) || Time end - t + time_parser.parse(value) end def self.rule_from_ical(ical) diff --git a/spec/examples/from_ical_spec.rb b/spec/examples/from_ical_spec.rb index 31064166..f1fec335 100644 --- a/spec/examples/from_ical_spec.rb +++ b/spec/examples/from_ical_spec.rb @@ -145,6 +145,10 @@ def sorted_ical(ical) schedule = IceCube::Schedule.from_ical(ical_string_with_time_zones) expect(schedule.exception_times[0].time_zone).to eq ActiveSupport::TimeZone.new("America/Chicago") end + it "adding the offset doesnt also change the time" do + schedule = IceCube::Schedule.from_ical(ical_string_with_time_zones) + expect(schedule.exception_times[0].hour).to eq 14 + end end end