【问题标题】:Swift 2.0, validation on DatePicker maximum DateSwift 2.0,对 DatePicker 最大日期的验证
【发布时间】:2016-09-11 20:34:52
【问题描述】:

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

【问题讨论】:

  • 使用选取器视图的 maximumDate 属性。
  • 设置你的日期选择器的maximumDate
  • 一个愿望:今天确实是 2016 年 5 月 16 日,所以没有人再使用 Swift 2.0。当前的最新版本是 2.2.1,所以请只写 Swift 2 :)

标签: ios swift datepicker uidatepicker nsdatecomponents


【解决方案1】:

编辑

斯威夫特 3

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

斯威夫特 2

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

将用户限制在特定的时间间隔内

试试这个: 它将限制用户选择距当前日期超过一个月的日期。

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

【讨论】:

    【解决方案2】:

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

    你可以使用这样的代码..

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

    【讨论】:

      【解决方案3】:

      设置UIDatePickermaximumDate 属性。

      【讨论】:

        【解决方案4】:

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

        在 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 2.0
        【解决方案5】:

        逻辑是这样的假设今天是 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。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多