2016-06-30 5 views
2

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

Но моя проблема заключается в том, как показать семь дней с текущей даты, если текущая дата - последний день месяца.

Пример: Предположим, что на сегодняшний день june, june имеет 30 дней, поэтому сегодняшняя дата - 30. После моей проблемы, как показать следующие 6 дней с текущей даты, значит, в datepicker я хочу 30 июня, , 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]; 
+0

вы можете upvote мой клеща ответ. Полезно другому пользователю SO искать и разрешать подобные проблемы. –

ответ

2

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

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]; 

Надежда Это поможет вам.

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

Happy Coding !!!

+0

Никогда не используйте 86400 для расчета календаря. Если переход на летнее время изменяется в течение интервала, вы можете получить неожиданное поведение. – vadian

+0

@vadian да Правильно .. Спасибо за предложение.Я думаю, что он хочет только показать дату в Picker, поэтому вместо цикла просто используйте 86400. Вопрос, пожалуйста, подумайте о летнем сохранении, если вы используете в других местах. –

+0

@Sandeep Пожалуйста, сделайте как ответ, если он вам поможет. –

0
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, так что вы можете использовать цикл и запустить его в семь раз, чем вы получаете следующие семь дней

0

Это создает массив 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); 
1

код кажется правильным, может быть проблема с подборщика третьей стороной, которую вы используете? Попробуйте вы код с 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 с выше коде, если пользователь прокручивает на предыдущий выбора даты автоматически устанавливает на дату сегодняшнего, и то же самое для 7-го июля, если пользователь прокрутки 10-подборщика автоматически устанавливает на 7 июля current date...

+0

Спасибо! Работает. – Raja

1
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); 
} 

Надежда этот код поможет вам это :)