Calculate age from birth date using NSDateComponents in Swift

You get an error message because 0 is not a valid value for NSCalendarOptions.
For “no options”, use NSCalendarOptions(0) or simply nil:

let ageComponents = calendar.components(.CalendarUnitYear,
                              fromDate: birthday,
                                toDate: now,
                               options: nil)
let age = ageComponents.year

(Specifying nil is possible because NSCalendarOptions conforms to the RawOptionSetType protocol which in turn inherits
from NilLiteralConvertible.)

Update for Swift 2:

let ageComponents = calendar.components(.Year,
    fromDate: birthday,
    toDate: now,
    options: [])

Update for Swift 3:

Assuming that the Swift 3 types Date and Calendar are used:

let now = Date()
let birthday: Date = ...
let calendar = Calendar.current

let ageComponents = calendar.dateComponents([.year], from: birthday, to: now)
let age = ageComponents.year!

Leave a Comment