iPhone: Как найти даты между двумя выбранными датами? - PullRequest
0 голосов
/ 22 октября 2011

В моем приложении я получаю две даты.

Например,

1й день: 28-10-2011

2-я дата: 2-11-2011

Теперь я хочу, чтобы все даты между этими двумя выбранными датами.

Так и должно быть,

28.10.2011

29.10.2011

30.10.2011

1-11-2011

2-11-2011

Как я могу получить это с помощью NSDate?

Ответы [ 4 ]

6 голосов
/ 22 октября 2011

попробуй dateWithTimeInterval:SinceDate:

NSMutableArray dates = [NSMutableArray array];
NSDate *curDate = startDate;
while([curDate timeIntervalSince1970] <= [endDate timeIntervalSince1970]) //you can also use the earlier-method
{
    [dates addObject:curDate];
    curDate = [MSDate dateWithTimeInterval:86400 sinceDate:curDate]; 86400 = 60*60*24
}
//here maybe an additional check if the enddate has to be inserted or not
3 голосов
/ 22 октября 2011

Посмотрите на NSDateComponents и dateByAddingComponents:toDate:options:, это то, что я использую, и это работает довольно хорошо. Обязательно следите за високосными годами.

ОБНОВЛЕНИЕ: я бы использовал пример Томаса. Он работает лучше, чем у меня, и его намного легче читать.

0 голосов
/ 22 октября 2011
NSDate *today = [NSDate date];
NSDate *startDate = [NSDate date];
NSDate  *endDate = [today addTimeInterval:10.0*60.0*60.0*24.0]; // end date 10 days ahead
while (YES) {

    startDate= [startDate addTimeInterval:1.0*60.0*60.0*24.0];
    NSLog(@"%@   --  %@",endDate,startDate);

    if([startDate compare:endDate]==NSOrderedDescending) break;
}
0 голосов
/ 22 октября 2011

Вы можете преобразовать ваши строки в объекты NSDate, используя NSDateFormatter, а затем использовать методы ealierDate: и LaterDate: NSDate для их сравнения.

...