Minimum and maximum date in UIDatePicker Minimum and maximum date in UIDatePicker ios ios

Minimum and maximum date in UIDatePicker


Try this:

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];NSDate *currentDate = [NSDate date];NSDateComponents *comps = [[NSDateComponents alloc] init];[comps setYear:-18];NSDate *minDate = [gregorian dateByAddingComponents:comps toDate:currentDate  options:0];[comps setYear:-150];NSDate *maxDate = [gregorian dateByAddingComponents:comps toDate:currentDate  options:0];[comps release];self.datePicker.minimumDate = minDate;self.datePicker.maximumDate = maxDate;

It may be easily translated to Swift 4.2:

    let calendar = Calendar(identifier: .gregorian)    let currentDate = Date()    var components = DateComponents()    components.calendar = calendar    components.year = -18    components.month = 12    let maxDate = calendar.date(byAdding: components, to: currentDate)!    components.year = -150    let minDate = calendar.date(byAdding: components, to: currentDate)!    picker.minimumDate = minDate    picker.maximumDate = maxDate


Look at this for Swift version.User negative value (-) to subtract and positive value to add date component.

1. Set minimum date

 yourDatePicker.minimumDate = Calendar.current.date(byAdding: .year, value: -1, to: Date())

2. Set maximum date

 yourDatePicker.maximumDate = Calendar.current.date(byAdding: .year, value: 1, to: Date())


Swift 5.1

extension UIDatePicker {    func set18YearValidation() {        let currentDate: Date = Date()        var calendar: Calendar = Calendar(identifier: Calendar.Identifier.gregorian)        calendar.timeZone = TimeZone(identifier: "UTC")!        var components: DateComponents = DateComponents()        components.calendar = calendar        components.year = -18        let maxDate: Date = calendar.date(byAdding: components, to: currentDate)!        components.year = -150        let minDate: Date = calendar.date(byAdding: components, to: currentDate)!        self.minimumDate = minDate        self.maximumDate = maxDate    } }