Перед подачей downvote, прокомментируйте причину
Я создал UIDatePicker
с минимальными & максимальных значениями дат (то есть 6 месяцев выбора даты) Теперь мне нужно получить 7 дней от выбранной даты. Там мне нужно проверить условия,Получит дни между днями
- Если дата дата сегодня мне нужно получить 7 дней с сегодняшнего дня и далее
- Если дата последней датой (т.е. последняя дата сборщика) нужно получить последние 7 дней, включая в последний день:
- Если вы видите все фотографии и фотографии из этого города, пожалуйста, сообщите нам об этом. И также при получении последнего & следующих 3 дней он не должен превышать лимит даты выбора.
- (void)addDays:(NSInteger)range {
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd-MM-yyyy"];
NSDate *startDate = self.selectedDate;
for (int x = 0; x <= range; x++) {
NSLog(@"%@", [dateFormat stringFromDate:startDate]);
startDate = [startDate dateByAddingTimeInterval:(60 * 60 * 24)];
}
}
- (void)minusDays:(NSInteger)range {
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd-MM-yyyy"];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [NSDateComponents new];
for (NSInteger i=0; i<range; i++) {
comps.day += -1;
NSDate *date = [calendar dateByAddingComponents:comps toDate:self.selectedDate options:0];
NSDateComponents *components = [calendar components:(NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:date];
NSLog(@"%@", [dateFormat stringFromDate:[calendar dateFromComponents:components]]);
}
}
- (void)calculateDateRange {
if ([dateArray count] > 0) {
[dateArray removeAllObjects];
}
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *lastcomponents = [calendar components:(NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:[NSDate date]];
lastcomponents.month += 6;
NSDateFormatter *formatter = [NSDateFormatter new];
[formatter setDateFormat:@"yyyy/MM/dd"];
NSDate *currentDate = [NSDate date];
NSDate *selectedD = self.selectedDate;
NSDate *endDate = [calendar dateFromComponents:lastcomponents];
NSDate *fromDate;
NSDate *toDate;
[calendar rangeOfUnit:NSDayCalendarUnit startDate:&fromDate interval:NULL forDate:currentDate];
[calendar rangeOfUnit:NSDayCalendarUnit startDate:&toDate interval:NULL forDate:selectedD];
NSDateComponents *difference = [calendar components:NSDayCalendarUnit fromDate:fromDate toDate:toDate options:0];
NSInteger first = [difference day];
[calendar rangeOfUnit:NSDayCalendarUnit startDate:&fromDate interval:NULL forDate:selectedD];
[calendar rangeOfUnit:NSDayCalendarUnit startDate:&toDate interval:NULL forDate:endDate];
NSDateComponents *difference2 = [calendar components:NSDayCalendarUnit fromDate:fromDate toDate:toDate options:0];
NSInteger second = [difference2 day];
if ((first == 0 || first < 3) && second > 7) {
[self addDays:7];
} else if (first >= 3 && second > 7) {
[self minusDays:3];
[self addDays:3];
}else if (second == 7 || second < 7) {
[self minusDays:7];
}
}
Это работает отлично. Но, не может получить последний последний & предыдущих дней.
У кого-нибудь есть идея?
Нет, вы не можете использовать 60 * 60 * 24 для одного дня. Когда-либо. Позвольте мне добавить ответ ... – Fogmeister
Пожалуйста, объясните, что «Если дата посередине сегодняшней даты и последней даты, мне нужно получить последние 3 дня, следующие 3 дня, включая сегодняшнюю дату.И, также, получая последние и следующие 3 дня, он не должен превышать лимит даты выбора. «Это ОЧЕНЬ смущает и, очевидно, не означает, что я думаю, что это значит. – Fogmeister
Это значит, мой диапазон дат ** 11 ноября '14 - 11 мая'15 ** Итак, если я выберу 16 ноября'14. Мне нужно получить последние 3 дня с выбранной даты (т.е. 16 ноября 14) до следующих 3 дней с выбранной даты (13, 14, 15, 16 , 17 и 19 ноября'14), мне нужно получить его. – Praveenkumar