diff --git a/SOPE/NGCards/ChangeLog b/SOPE/NGCards/ChangeLog index a2fec6384..b74626387 100644 --- a/SOPE/NGCards/ChangeLog +++ b/SOPE/NGCards/ChangeLog @@ -1,3 +1,9 @@ +2010-03-09 Wolfgang Sourdeau + + * iCalTimeZonePeriod.m (_occurenceForDate:byRRule:): fixed + computing of timezone switch dates, which were offset by one week + too early. + 2010-01-06 Wolfgang Sourdeau * iCalDateTime.m (-setTimeZone:): don't modify the date in case of diff --git a/SOPE/NGCards/iCalTimeZonePeriod.m b/SOPE/NGCards/iCalTimeZonePeriod.m index 855f7c8a2..f1f7a0a04 100644 --- a/SOPE/NGCards/iCalTimeZonePeriod.m +++ b/SOPE/NGCards/iCalTimeZonePeriod.m @@ -105,6 +105,8 @@ dateTime]; } +/* This method returns the date corresponding for to the start of the period + in the year of the reference date. */ - (NSCalendarDate *) _occurenceForDate: (NSCalendarDate *) refDate byRRule: (iCalRecurrenceRule *) rrule { @@ -132,12 +134,7 @@ second: -[self _secondsOfOffset: @"tzoffsetfrom"]]; dateDayOfWeek = [tmpDate dayOfWeek]; - - if (pos > 0) - offset = (dayOfWeek - dateDayOfWeek) + ((pos - 1) * 7); - else - offset = (dayOfWeek - dateDayOfWeek) + (pos * 7); - + offset = (dayOfWeek - dateDayOfWeek) + (pos * 7); tmpDate = [tmpDate addYear: 0 month: 0 day: offset hour: 0 minute: 0 second: 0];