Swift 2.0,对 DatePicker 最大日期的验证

Swift 2.0, validation on DatePicker maximum Date

假设今天是 2016 年 5 月 16 日,我想限制用户显示日期到 2016 年 6 月 16 日。

设置 maximumDate 属性 of UIDatePicker.

在 swift 2.0 中,使用 属性 maximumDate 来解决您的问题。

您可以像这样使用代码..

let datePicker = UIDatePicker()
datePicker.maximumDate = NSDate()

逻辑是这样的,假设今天是 2016 年 5 月 16 日,你想增加 30 天,那么下面的逻辑会对你有所帮助

 // Initialize stringified date presentation
var myStringDate: String = "2016-05-16"
    // How much day to add
var addDaysCount: Int = 30
    // Creating and configuring date formatter instance
var dateFormatter: NSDateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
    // Retrieve NSDate instance from stringified date presentation
var dateFromString: NSDate = dateFormatter.dateFromString(myStringDate)
    // Create and initialize date component instance
var dateComponents: NSDateComponents = NSDateComponents()
dateComponents.day = addDaysCount
    // Retrieve date with increased days count
var newDate: NSDate = NSCalendar.currentCalendar().dateByAddingComponents(dateComponents, toDate: dateFromString, options: 0)
NSLog("Original date: %@", dateFormatter.stringFromDate(dateFromString))
NSLog("New date: %@", dateFormatter.stringFromDate(newDate))
// Clean up
dateComponents, dateComponents = nil
dateFormatter, dateFormatter = nil

你得到的新日期可以设置到UIDatePicker。

您可以通过编程设置最大日期和最小日期。

对 iOS 8+

使用以下代码
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDate *currentDate = [NSDate date];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setMonth:1];
NSDate *maxDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0];

/* Optional for your case */
[comps setYear:-30];
NSDate *minDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0];

[datePicker setMaximumDate:maxDate];
[datePicker setMinimumDate:minDate]

编辑

Swift 3

    let datePicker = UIDatePicker()
    datePicker.maximumDate = Date()

swift 2

    let datePicker = UIDatePicker()
    datePicker.maximumDate = NSDate()

限制用户使用特定的时间间隔

试试这个: 它将限制用户从当前日期起超过一个月的 select 日期。

let datePicker = UIDatePicker()
let secondsInMonth: NSTimeInterval = 30 * 24 * 60 * 60
datePicker.maximumDate = NSDate(timeInterval: secondsInMonth, sinceDate: NSDate())