diff --git a/SOPE/NGCards/iCalTimeZone.m b/SOPE/NGCards/iCalTimeZone.m index 555038e5e..bb8796953 100644 --- a/SOPE/NGCards/iCalTimeZone.m +++ b/SOPE/NGCards/iCalTimeZone.m @@ -194,17 +194,22 @@ static NSArray *knownTimeZones; forDate: (NSCalendarDate *) aDate { NSArray *periods; + NSEnumerator *periodsList; iCalTimeZonePeriod *period; NSCalendarDate *occurence; + occurence = nil; periods = [self childrenWithTag: pName]; if ([periods count]) { - period = (iCalTimeZonePeriod *) [periods objectAtIndex: 0]; - occurence = [period occurenceForDate: aDate]; + periodsList = [periods objectEnumerator]; + period = (iCalTimeZonePeriod *) [periodsList nextObject]; + while (occurence == nil && period) + { + occurence = [period occurenceForDate: aDate]; + period = (iCalTimeZonePeriod *) [periodsList nextObject]; + } } - else - occurence = nil; return occurence; } diff --git a/SOPE/NGCards/iCalTimeZonePeriod.m b/SOPE/NGCards/iCalTimeZonePeriod.m index f3613ee68..3245155a5 100644 --- a/SOPE/NGCards/iCalTimeZonePeriod.m +++ b/SOPE/NGCards/iCalTimeZonePeriod.m @@ -174,11 +174,13 @@ NSCalendarDate *tmpDate; iCalRecurrenceRule *rrule; + tmpDate = nil; rrule = (iCalRecurrenceRule *) [self uniqueChildWithTag: @"rrule"]; + if ([rrule isVoid]) tmpDate = [(iCalDateTime *) [self uniqueChildWithTag: @"dtstart"] dateTime]; - else + else if ([rrule untilDate] == nil || [refDate compare: [rrule untilDate]] == NSOrderedAscending) tmpDate = [self _occurenceForDate: refDate byRRule: rrule]; return tmpDate;