Как получить будущие даты - PullRequest
       1

Как получить будущие даты

0 голосов
/ 23 сентября 2011

Как получить несколько будущих дат по средам и пятницам, используя NSDateComponents?Ответы будут с благодарностью.Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 23 сентября 2011

Это на самом деле немного сложная проблема, если вы хотите, чтобы она была полностью пуленепробиваемой. Вот как бы я это сделал:

NSInteger wednesday = 4; // Wed is the 4th day of the week (Sunday is 1)
NSInteger friday = 6;

NSDate *start = ...; // your starting date
NSDateComponents *components = [[NSDateComponents alloc] init];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

for (int i = 0; i < 100; ++i) {
  [components setDay:i];
  NSDate *target = [gregorian dateByAddingComponents:components toDate:start options:0];
  NSDateComponents *targetComponents = [gregorian components:NSUIntegerMax fromDate:target];
  if ([targetComponents weekday] == wednesday || [targetComponents weekday] == friday) {
    NSLog(@"found wed/fri on %d-%d-%d", [targetComponents month], [targetComponents day], [targetComponents year]);
  }
}

[gregorian release];
[components release];
0 голосов
/ 23 сентября 2011

Если у вас есть NSDate экземпляр для конкретного дня недели (например, среда), вы можете получить новые будущие даты, используя следующий код:

NSDate *yourDate = ...
NSDateComponents* components = [[NSDateComponents alloc] init];
components.week = weeks;
NSDate* futureDate = [[NSCalendar reCurrentCalendar] dateByAddingComponents:components toDate:yourDate options:0];
[components release];

PS Согласитесь с Брайаном, попробуйте исследовать, прежде чем спрашивать.

0 голосов
/ 23 сентября 2011

Чтобы получить правильный день недели, вы должны создать подходящий экземпляр NSCalendar, создать объект NSDate, используя dateFromComponents:, а затем использовать компоненты: fromDate: для получения дня недели.

...