Wie erhalten Sie das Datum des ersten Samstags, der nach dem heutigen Tag in Objective-C für iOS auftritt?Erhalten Sie das Datum des nächsten Samstags in Objective-C?
Antwort
Dies wird Sie durch den Prozess der Manipulation von Kalenderdaten führen:
[NSDate dateWithNaturalLanguageString: @"next Saturday"]
Edit: Ab OS X 10.9 und iOS 8, können Sie dies tun:
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *now = [NSDate date];
NSDateComponents *saturday = [[NSDateComponents alloc] init];
saturday.weekday = 7 /* Saturday */;
NSDate *nextSaturday = [calendar nextDateAfterDate:now matchingComponents:saturday options:0];
Aus der offiziellen Dokumentation: Diese Methode (dateWithNaturalLanguageString :) unterstützt nur eine begrenzte Menge von umgangssprachlichen Phrasen, hauptsächlich in Englisch. Es kann zu unerwarteten Ergebnissen führen, und es wird dringend davon abgeraten. –
@Bavarious - das habe ich gesehen. Es ist viel einfacher als das, was ich tun würde, und es funktioniert in meinem Fall. – Moshe
Auch wenn es nur eine begrenzte Menge von umgangssprachlichen Redewendungen in Englisch unterstützt, wird "nächster Samstag" in jeder Anwendung funktionieren. –
NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [NSDate date];
NSDateComponents *weekdayComponents = [gregorian components:NSWeekdayCalendarUnit fromDate:date];
NSInteger todayWeekday = [weekdayComponents weekday];
enum Weeks {
SUNDAY = 1,
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY
};
NSInteger moveDays=SATURDAY-todayWeekday;
if (moveDays<=0) {
moveDays+=7;
}
NSDateComponents *components = [NSDateComponents new];
components.day=moveDays;
NSCalendar *calendar=[[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
NSDate* newDate = [calendar dateByAddingComponents:components toDate:date options:0];
NSLog(@"%@",newDate);
Dies sollte als die richtige Antwort markiert werden. – BFar
[Auf welchen Samstag bezieht sich "weiter"?] (Http://oxtweekend.com) – BoltClock
Der erste Samstag nach heute. – Moshe