Как показать 7 дней с текущей даты в ios, если сегодня последний день месяца
Я показываю семь дней месяца в datepickerview
.
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 ответов:
Вы можете вычислить следующие семь дней, используя следующую строку кода:
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); }
Надеюсь, что этот код поможет вам:)