获取两个NSDates之间的所有日期(不是几天)

问题描述:

如何获取两个日期之间的所有日期?获取两个NSDates之间的所有日期(不是几天)

例如: 开始日期= 2011/01/25 结束日期= 2011/02/03

+2

你是什么意思日期,而不是天? – msgambel

+0

可能重复[两个NSDates之间的天数](http://*.com/questions/4739483/number-of-days-between-two-nsdates) –

+0

@JoshCaswell主题说:“不是天”他想要一个日期列表。 –

1)求无天的两个日期之间。然后,

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

To find number of days

To find next date

NSCalendarUnit供应定义拍摄日期是标准化的护理日期&之间的步骤。

的iOS API 8,雨燕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 
    } 
+1

谢谢。我正在使用这个Objective-C版本来完成我的场景。 – kevinl

找到两个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]; 
    } 
}