Himanth
Himanth

Reputation: 2446

How to set maximum date in uidatepickerview as today 23:59?

How do I set maximum date in UIDatepickerView as today 23:59pm. I tried like this

        datePicker.maximumDate = [NSDate date];

But it is not working. How can I do this?

Upvotes: 0

Views: 246

Answers (1)

Ketan Parmar
Ketan Parmar

Reputation: 27448

You can do something like,

  NSDateFormatter *df = [[NSDateFormatter alloc]init];

[df setDateFormat:@"yyyy-MM-dd"];

NSDate *currentDate = [NSDate date];

NSString *currentDateStr = [[df stringFromDate:currentDate] stringByAppendingString:@" 23:59"];

[df setDateFormat:@"yyyy-MM-dd HH:mm"];

NSDate *maxDate = [df dateFromString:currentDateStr];

NSLog(@"max date : %@",maxDate);

NSLog(@"max date str : %@",[df stringFromDate:maxDate]);

yourDatePicker.maximumDate = maxDate;

Update :

Another approach using NSDateComponents as suggested by @droppy,

  NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components: NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:[NSDate date]];
NSInteger day = [dateComponents day];
NSInteger month = [dateComponents month];
NSInteger year = [dateComponents year];
dateComponents.hour = 23;
dateComponents.minute = 59;

NSLog(@"%ld : %ld : %ld",(long)day,(long)month,(long)year);

NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDate *resultDate = [gregorianCalendar dateFromComponents:dateComponents];

NSDateFormatter *df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"yyyy-MM-dd HH:mm"];

NSLog(@"result date : %@",resultDate);
NSLog(@"result date string : %@",[df stringFromDate:resultDate]);

yourDatePicker.maximumDate = resultDate;

Upvotes: 2

Related Questions