在我的应用中,用户可以选择他们是否未满18岁或超过18岁。用户使用日期选择器输入他们的出生日期。我需要创建一个函数,将MM / DD / YYYY格式的当前日期与DatePicker日期进行比较,以查看用户输入的年龄是否超过18岁。
我将DatePicker文本设置为关联文本字段的当前功能是:
func updatePicker() {
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM/dd/yyyy"
dob.text = dateFormatter.stringFromDate(datePickerView.date)
}
当用户尝试转到下一页时,表单会被验证,即我需要比较日期并在18岁以下时显示提醒。
不知道从哪里开始进行日期字符串评估。
答案 0 :(得分:0)
使用此功能比较日期
func compareDate(date1: NSDate!, toDate date2: NSDate!, toUnitGranularity unit: NSCalendarUnit) -> NSComparisonResult
请参阅此question
答案 1 :(得分:0)
不要将日期转换为文本,然后再将文本转换为日期。 只需保留datePicker中的日期,直到您需要它进行验证。
有一个成员变量var selectedDate : NSDate?
然后检查是否超过18岁
if let userDate=self.selectedDate {
if(NSDate().timeIntervalSinceDate(userDate) >= (568024668 /*18 years in seconds*/) {
.... /*is 18*/
}
}
答案 2 :(得分:0)
您可以使用NSCalendar组件方法并从两个日期中提取NSCalendarUnit.CalendarUnitYear差异:
extension NSDate {
var is18yearsOld:Bool {
return NSDate().yearsFrom(self) > 18
}
func yearsFrom(date:NSDate) -> Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitYear, fromDate: date, toDate: self, options: nil).year }
}
let dob1 = NSCalendar.currentCalendar().dateWithEra(1, year: 1970, month: 3, day: 27, hour: 7, minute: 19, second: 26, nanosecond: 0)!
let dob2 = NSCalendar.currentCalendar().dateWithEra(1, year: 2000, month: 3, day: 27, hour: 7, minute: 19, second: 26, nanosecond: 0)!
let is18years1 = dob1.is18yearsOld // true
let is18years2 = dob2.is18yearsOld // false