使用日期选择器后如何获得年龄?

时间:2016-04-01 06:42:09

标签: ios swift datepicker

我需要在使用datepicker之后获得年龄。我该怎么做我现在可以让datepicker工作了。

@IBAction func datepickerobj(sender: UITextField) {

    let datePickerView:UIDatePicker = UIDatePicker()

    datePickerView.datePickerMode = UIDatePickerMode.Date

    sender.inputView = datePickerView

    datePickerView.addTarget(self, action: Selector("datePickerValueChanged:"), forControlEvents: UIControlEvents.ValueChanged)
}


func datePickerValueChanged(sender:UIDatePicker) {

    let dateFormatter = NSDateFormatter()

    dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle

    dateFormatter.timeStyle = NSDateFormatterStyle.NoStyle

    dateofbirth.text = dateFormatter.stringFromDate(sender.date)

    let myDOB = NSCalendar.currentCalendar().dateWithEra(1, year: 1970, month: 09, day: 10, hour: 0, minute: 0, second: 0, nanosecond: 0)!
    let myAge = myDOB.age
}

3 个答案:

答案 0 :(得分:1)

这适用于你

var birthday: NSDate = .....  //date that comes from date picker
var now: NSDate = NSDate()
var ageComponents: NSDateComponents = NSCalendar.currentCalendar().components(.Year, fromDate: birthday, toDate: now, options: 0)
var age: Int = ageComponents.year()

如果您想要格式化日期,可以使用DateFormatter

实施例

let usDateFormat = NSDateFormatter.dateFormatFromTemplate("MMddyyyy", options: 0, locale: NSLocale(localeIdentifier: "en-US"))
//usDateFormat now contains an optional string "MM/dd/yyyy".

let gbDateFormat = NSDateFormatter.dateFormatFromTemplate("MMddyyyy", options: 0, locale: NSLocale(localeIdentifier: "en-GB"))
//gbDateFormat now contains an optional string "dd/MM/yyyy"

formatter.dateFormat = usDateFormat
let usSwiftDayString = formatter.stringFromDate(swiftDay)
// usSwiftDayString now contains the string "06/02/2014".


formatter.dateFormat = gbDateFormat
let gbSwiftDayString = formatter.stringFromDate(swiftDay)
// gbSwiftDayString now contains the string "02/06/2014".

答案 1 :(得分:0)

//may be it will help for u
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy"
let currentYear: Int =  Int(formatter.stringFromDate(NSDate()))
let dobYear: Int =  Int(formatter.stringFromDate(myDOB))
let age: Int = currentYear - dobYear

答案 2 :(得分:0)

Swift 4.1 / Xcode 9.4.1

func age(dateOfBirth: Date) -> Double {
    var ageComponents: DateComponents = Calendar.current.dateComponents([.year], from: dateOfBirth, to: Date())
    return Double(ageComponents.year!)
}
相关问题