現在、次の金曜日に日をインクリメントする以下のコードがありますが、現在の週の金曜日を取得する必要があります。たとえば、先週の日曜日、03/01 の場合。私の回答は金曜日(03/06)ではなく、先週の金曜日(02/28)になると思います。
他の回答を確認しましたが、これを達成するためのクリーンな方法を実装する方法に混乱しています。
+ (NSDate *)getLastFridayYearsMonthStartingDate:(NSDate *)date {
NSDateComponents *dateComponents = [[NSCalendar gregorianCalendar] components:NSYearCalendarUnit|NSCalendarUnitDay|NSCalendarUnitMonth|NSWeekdayCalendarUnit
fromDate:date];
// Set date to last year, +1 to account for previous business day
[dateComponents setYear: -1];
[dateComponents setDay:[dateComponents day]+1];
// We always want the start date to be the friday of the given week, so we will increment the difference if not
if ([dateComponents weekday] != 6) {
NSInteger daysToFriday = (13 - [dateComponents weekday]) % 7;
[dateComponents setDay:[dateComponents day]+daysToFriday];
}
NSDate *fridayDate = [[NSCalendar gregorianCalendar] dateFromComponents:dateComponents];
return fridayDate;
}