Frage

Wer weiß, wie 20.00 Uhr die NSDate des kommenden Freitag zu bekommen?

War es hilfreich?

Lösung

Ja, dieser Artikel zeigen Ihnen, wie die aktuelle Woche Sonntag erhalten.

Ich passte es schnell Freitag um 20:00 Uhr (Unter der Annahme eines Gregorianischen Kalender) zu erhalten

NSDate *today = [[NSDate alloc] init];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

// Get the weekday component of the current date
NSDateComponents *weekdayComponents = [gregorian components:NSWeekdayCalendarUnit fromDate:today];

/*
Create a date components to represent the number of days to add to the current date.
The weekday value for Friday in the Gregorian calendar is 6, so add the difference between 6 and today to get the number of days to add.
Actually, on Saturday that will give you -1, so you want to subtract from 13 then take modulo 7
*/
NSDateComponents *componentsToAdd = [[NSDateComponents alloc] init];
[componentsToAdd setDay: (13 - [weekdayComponents weekday]) % 7];

NSDate *friday = [gregorian dateByAddingComponents:componentsToAdd toDate:today options:0];

/*
friday now has the same hour, minute, and second as the original date (today).
To normalize to midnight, extract the year, month, and day components and create a new date from those components.
*/
NSDateComponents *components =
    [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit)
               fromDate: friday];

// And to set the time to 20:00
[components setHour:22];

friday = [gregorian dateFromComponents:components];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top