1
很高興聽到有關如何改進/縮短此方法的建議。總之需要:如何改進此「DateFromNextWeekDay:FromDate」方法代碼?
- 找到下一個星期幾(例如星期三)匹配傳入方法的日期。
- 例如接下來的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;
}
感謝
巴,打我吧! – Anomie 2011-03-21 00:52:48
哦哇 - 我沒有意識到你可以添加/減去這樣的日期! – Greg 2011-03-21 00:55:40
哈哈我討厭什麼時候發生在我身上:) – drewag 2011-03-21 00:56:25