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())
假设今天是 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())