Как показать 7 дней с текущей даты в ios, если сегодня последний день месяца


Я показываю семь дней месяца в datepickerview.

Но моя проблема заключается в том, как показать семь дней от текущей даты, если сегодняшняя текущая дата является последним днем месяца. Пример: Предположим, что сегодняшний месяц-июнь, Июнь имеет 30 дней, поэтому сегодняшняя дата-30 .Тогда моя проблема заключается в том,как показать следующие 6 дней от текущей даты,значит в datepicker я хочу 30 июня,1july,2july,3july,4july,5july, 6july. Пожалуйста, подскажите мне, как решить эту проблему. Я также предоставил код, пожалуйста, предложите я, где я делаю неправильно с моим кодом.
NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *comps = [NSDateComponents new];
    comps.day = 7;

    NSDate *sevenDays = [calendar dateByAddingComponents:comps toDate:[NSDate date] options:0];
    ActionSheetDatePicker *datePicker = [[ActionSheetDatePicker alloc] initWithTitle:@"Select Date" datePickerMode:UIDatePickerModeDate selectedDate:[NSDate date] minimumDate:[NSDate date] maximumDate:sevenDays target:self action:@selector(timeWasSelected:element:) origin:sender];
5 2

5 ответов:

Вы можете вычислить следующие семь дней, используя следующую строку кода:

NSDate *sevenDays = [[NSDate date] dateByAddingTimeInterval:60*60*24*7];

Затем вы можете использовать в DatePicker как из вашего кода ниже.

ActionSheetDatePicker *datePicker = [[ActionSheetDatePicker alloc] 
    initWithTitle:@"Select Date" datePickerMode:UIDatePickerModeDate 
    selectedDate:[NSDate date] minimumDate:[NSDate date] 
    maximumDate:sevenDays target:self 
    action:@selector(timeWasSelected:element:) origin:sender];

Надеюсь, это поможет вам.

Пожалуйста, добавьте комментарий, если у вас есть какие-либо вопросы по этому поводу.

Счастливого Кодирования !!!

Код кажется правильным, может быть, проблема в том, что вы используете сторонний подборщик? Попробуйте написать код с помощью UIDatePicker и посмотрите, получите ли Вы результаты, которые вы ищете, если это означает, что ActionSheetDatePicker имеет некоторые проблемы....

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [NSDateComponents new];
comps.day = 7;

NSDate *sevenDays = [calendar dateByAddingComponents:comps toDate:  [NSDate date] options:0];

Ниже код В С UIDatePicker выглядит так...._datePicker - это iboutlet UIDatePicker

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [NSDateComponents new];
comps.day = 7;

NSDate *sevenDays = [calendar dateByAddingComponents:comps toDate:[NSDate date] options:0];
[_datePicker setMinimumDate:[NSDate date]];
[_datePicker setMaximumDate:sevenDays];

В UIDatePicker с приведенным выше кодом, если пользователь прокручивает до предыдущей даты, picker автоматически устанавливает сегодняшнюю дату, и то же самое для 7-го Июль если пользователь прокрутит до 10-го выбора будет автоматически устанавливается на 7 июля текущая дата...

NSDateComponents *dayComponent = [[NSDateComponents alloc] init];
dayComponent.day = 1;

NSCalendar *theCalendar = [NSCalendar currentCalendar];
NSDate *nextDate = [theCalendar dateByAddingComponents:dayComponent toDate:[NSDate date] options:0];

NSLog(@"nextDate: %@ ...", nextDate);

Из этого вы можете вычислить среднее значение следующего дня, если сегодня 30, то следующий день равен 1, так что вы можете использовать цикл for и запустить его семь раз, чем вы получите следующие семь дней

Это создает массив nextSevenDays, содержащий следующие 7 дней, включая сегодняшний день.

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *startDate = [calendar startOfDayForDate:[NSDate date]];
NSMutableArray<NSDate*> * nextSevenDays = [[NSMutableArray alloc] init];
for (NSInteger i = 0; i < 7; i++) {
  [nextSevenDays addObject:[calendar dateByAddingUnit:NSCalendarUnitDay value: i toDate: startDate options: NSCalendarMatchNextTime]];
}
NSLog(@"%@", nextSevenDays);

Чтобы получить дату через 7 дней, используйте

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *startDate = [calendar startOfDayForDate:[NSDate date]];
NSDate *sevenDaysFromNow = [calendar dateByAddingUnit:NSCalendarUnitDay value: 7 toDate: startDate options: NSCalendarMatchNextTime];
NSLog(@"%@", sevenDaysFromNow);
for (int i = 0; i < 7; i ++)
{
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *comps = [NSDateComponents new];
    comps.day =i;
    NSDate *sevenDays = [calendar dateByAddingComponents:comps toDate:objDate.date options:0];
    [dateFormatter setDateFormat:@"dd/MM/yy"];

    NSString *str = [dateFormatter stringFromDate:sevenDays];
    NSLog(@"str : %@",str);
}

Надеюсь, что этот код поможет вам:)