user6032625
user6032625

Reputation: 197

How do I get the age after using a date picker?

I need to get the age after the datepicker has been used. How would I do this. I can currently get the datepicker to work.

@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
}

Upvotes: 1

Views: 1899

Answers (4)

Andrea Leganza
Andrea Leganza

Reputation: 477

extension Date {

func age() -> Int {
    return Int(Calendar.current.dateComponents([.year], from: self, to: Date()).year!)
}
}

An Date extension version, which let you call the method on any Date var. eg:

let calendar = NSCalendar.currentCalendar()
let components = calendar.components([NSCalendarUnit.Year, NSCalendarUnit.Month, NSCalendarUnit.Day], fromDate: NSDate.init())
components.day = 31
components.month = 1
components.year = 1979

let date = calendar.dateFromComponents(components)
let years = date.age

Upvotes: 0

drewster
drewster

Reputation: 6120

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!)
}

Upvotes: 2

Govind Prajapati
Govind Prajapati

Reputation: 957

This will work fine for u

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()

If u want to formate date you can use DateFormatter

Ex.

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".

Upvotes: 1

Satyanarayana
Satyanarayana

Reputation: 1067

//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

Upvotes: 0

Related Questions