この方法を改善/短縮する方法についての提案を聞いてうれしいです。要するに:
- 曜日(水など)がメソッドに渡されたものと一致する次の日付を検索します。
- たとえば、特定の日付からの次のWED(およびその特定の日付を含む)
以下のコード:
- (NSDate*)DateFromNextWeekDay:(NSInteger)weekDay FromDate:(NSDate*)fromDate {
// Returns the next week day, as specified by "weekDay", from the specified "fromDate"
NSDate *fromDateMidday = [[NSDate date] dateBySettingHour:12 andMinute:0];
NSDate *dateCounter = [[fromDateMidday copy] dateByAddingTimeInterval:-86400]; // Take 1 day away, which will get incremented in the loop
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSInteger day;
do{
dateCounter = [dateCounter dateByAddingTimeInterval:86400];
unsigned units = NSWeekdayCalendarUnit;
NSDateComponents *components = [gregorian components:units fromDate:dateCounter];
day = [components weekday];
} while(day != weekDay);
[gregorian release];
return dateCounter;
}
ありがとう