Получить все даты (не дни) между двумя NSDates

Как я могу получить все даты, которые приходятся между двумя датами?

Например: Дата начала = 25.01.2011 Дата окончания = 03.02.2011


person iOSDev    schedule 28.09.2011    source источник
comment
Что вы имеете в виду под датами, а не днями?   -  person msgambel    schedule 28.09.2011
comment
возможный дубликат Количество дней между двумя NSDates   -  person jscs    schedule 28.09.2011
comment
@JoshCaswell субъект сказал Не дни Он хочет список дат.   -  person Black Frog    schedule 28.09.2011
comment
@Black Frog: Но imMobile не удосужился указать, с каким интервалом. NSTimeInterval — это double с миллисекундным разрешением. Между любыми двумя буквально миллионы дат.   -  person jscs    schedule 28.09.2011
comment
Да, каждая миллисекунда - это отдельная дата во времени и пространстве, но я считаю, что он хочет, чтобы каждый день был 24-часовым периодом.   -  person Black Frog    schedule 28.09.2011


Ответы (3)


1) Найдите количество дней между двумя датами. Потом,

for(i=0;i<noofdays;i++)
{
//Find the next date
//add to the array
}

Чтобы найти количество дней

Чтобы найти следующую дату

person KingofBliss    schedule 28.09.2011

NSCalendarUnit служит для определения шага между датами и заботится о нормализации дат.

API для iOS 8, Swift 2.0

    func generateDates(calendarUnit: NSCalendarUnit, startDate: NSDate, endDate: NSDate) -> [NSDate] {

            let calendar = NSCalendar.currentCalendar()
            let normalizedStartDate = calendar.startOfDayForDate(startDate)
            let normalizedEndDate = calendar.startOfDayForDate(endDate)

            var dates = [normalizedStartDate]
            var currentDate = normalizedStartDate

            repeat {

                currentDate = calendar.dateByAddingUnit(calendarUnit, value: 1, toDate: currentDate, options: NSCalendarOptions.MatchNextTime)!
                dates.append(currentDate)

            } while !calendar.isDate(currentDate, inSameDayAsDate: normalizedEndDate)

            return dates
    }
person Kex    schedule 26.09.2015
comment
благодаря. я использую версию Objective-C для завершения моего сценария. - person kevinl; 01.10.2015

Чтобы найти все дни между двумя NSDates:

- (void)cerateDaysArray{
    _daysArray = [NSMutableArray new];
    NSCalendar *calendar = [[NSCalendaralloc]initWithCalendarIdentifier:NSGregorianCalendar];
    [calendar setTimeZone:[NSTimeZone systemTimeZone]];
    NSDate *startDate = [_minDate copy];
    NSDateComponents *deltaDays = [NSDateComponents new];
    [deltaDays setDay:1];
    [_daysArray addObject:startDate];
    while ([startDate compare:_maxDate] == NSOrderedAscending) {
       startDate = [calendar dateByAddingComponents:deltaDays toDate:startDate options:0];
       [_daysArray addObject:startDate];
   }
}
person Mike.R    schedule 13.10.2015