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

Posted

技术标签:

【中文标题】Swift 2.0,对 DatePicker 最大日期的验证【英文标题】:Swift 2.0, validation on DatePicker maximum Date 【发布时间】: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 :) 【参考方案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。

【讨论】:

以上是关于Swift 2.0,对 DatePicker 最大日期的验证的主要内容,如果未能解决你的问题,请参考以下文章

datePicker 插件在 Phonegap 2.0 中不起作用

Swift 2.0 按属性对对象数组进行排序

Bootstrap datepicker 2.0 在月视图中显示日历

如何在 Swift 2.0 中正确解开这些 CLPlacemarks?

如何在 swift 3.0 中制作时间选择器视图?

Swift 3 使用 UINavBar 按钮显示以编程方式创建的 datePicker