From f754169289194399d75d4189e841bb736dee81b0 Mon Sep 17 00:00:00 2001 From: John Hamelink Date: Sat, 3 Oct 2015 16:17:51 +0100 Subject: [PATCH 1/2] Add correct offset without changing time --- lib/ice_cube/parsers/ical_parser.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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) From f03e439b279650035941a596d661f864f1332673 Mon Sep 17 00:00:00 2001 From: John Hamelink Date: Sat, 3 Oct 2015 16:29:16 +0100 Subject: [PATCH 2/2] Add spec which proves hour doesn't change when timezone is set --- spec/examples/from_ical_spec.rb | 4 ++++ 1 file changed, 4 insertions(+) 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