[英]Compare Current Date to DatePicker Value in Swift
在我的應用程序中,用戶可以選擇他們是 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 歲以下時顯示警報。
只是不確定從哪里開始日期字符串評估。
使用此功能比較日期
func compareDate(date1: NSDate!, toDate date2: NSDate!, toUnitGranularity unit: NSCalendarUnit) -> NSComparisonResult
看到這個問題
不要將日期轉換為文本,然后再將文本轉換為日期。 只需保留datePicker中的日期,直到您需要它進行驗證。
有一個成員變量var selectedDate : NSDate?
然后檢查是否超過18歲
if let userDate=self.selectedDate {
if(NSDate().timeIntervalSinceDate(userDate) >= (568024668 /*18 years in seconds*/) {
.... /*is 18*/
}
}
您可以使用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
首先,您必須使用 Calendar 組件方法以 Int 類型獲取部分日期:
// Current date
let currentDate = Date()
let calendar = Calendar.current
let currentYear = calendar.component(.year, from: currentDate) //year: Int
let currentMonth = calendar.component(.month, from: currentDate) //month: Int
let currentDay = calendar.component(.day, from: currentDate) //day: Int
// DatePicker's date
let yearFromDatePicker = calendar.component(.year, from: datePicker.date) //year: Int
let monthFromDatePicker = calendar.component(.month, from: datePicker.date) //month: Int
let dayFromDatePicker = calendar.component(.day, from: datePicker.date) //day: Int
然后您可以根據您的條件將日期的各個部分相互比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.