Original-Datum: 23.03.2012 Intervall: alle 2 Wochen
Ausgang: letztes Auftreten -> 06.04.2012
Wie kann ich dies den besten Weg erreichen in Ziel-C (iOS)?
Nebenbei bemerkt: Meine aktuelle nicht so funktioniert und wirklich schlechte Lösung:
+ (NSDate *) getRelativeStartDateForIntervalType:(NSInteger)intervalType andStartDateTime:(NSDate *)startDateTime {
NSDateComponents *components = [[NSDateComponents alloc] init];
BOOL found = false;
NSDate *relativeStartDate;
NSDate *previousDate;
for (int i = 0; !found ; i++) {
previousDate = relativeStartDate;
switch (intervalType) {
case 0:
[components setDay:i]; // add i days
break;
case 1:
[components setWeek:i]; // add i weeks
break;
case 2:
[components setMonth:i]; // add i months
break;
case 3:
[components setDay:i]; // add i weeks
break;
default:
NSLog(@"you shouldn't be here");
break;
}
relativeStartDate = [[NSCalendar currentCalendar] dateByAddingComponents:components toDate:startDateTime options:0];
if ([relativeStartDate compare:[NSDate date]] == NSOrderedDescending) {
found = true;
if (i > 0 && [previousDate compare:[NSDate date]] == NSOrderedDescending) {
relativeStartDate = previousDate;
}
}
}
return relativeStartDate;
}