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】:设置UIDatePicker
的maximumDate
属性。
【讨论】:
【参考方案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 中不起作用
Bootstrap datepicker 2.0 在月视图中显示日历