将 Facebook 生日转换为年龄 swift

Convert facebook birthday to age swift

从 Facebook SDK 检索生日时,我得到这个字符串“01/12/1990”。

我的问题是,如何使用此字符串将生日转换为用户的年龄?

你可以在提问前多做一点Google,你可能会发现这些答案对你有帮助:

How do you create a swift Date object

Calculate age from birth date using NSDateComponents in Swift

func calcAge(birthday:String) -> Int {
    let dateFormater = DateFormatter()
    dateFormater.dateFormat = "MM/dd/yyyy"
    let birthdayDate = dateFormater.date(from: birthday)
    let calendar: NSCalendar! = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)
    let now: NSDate! = NSDate()
    let calcAge = calendar.components(.year, from: birthdayDate!, to: now as Date, options: [])
    let age = calcAge.year
    return age!
}

用法:

print(calcAge(birthday: "01/12/1990"))
 func yearsBetween(date1: Date, date2: Date) -> Int {
        let calendar = Calendar.current
        let components = calendar.dateComponents([Calendar.Component.year], from: date1, to: date2)
        return components.year ?? 0
    }

// 获取年龄

    let dateString = "01/12/1990"
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd/MM/yyyy"
    let date1 = dateFormatter.date(from: dateString)
    let date2 = Date()
    let age  = self.daysBetween(date1:date1!, date2:date2)

希望对您有所帮助。

Swift 4

我的用例也是针对 Facebook 的,我使用 UserDefaults 来存储生日。下面的函数将从 UserDefaults 中检索生日,由 graphRequest 编辑 return,格式与您的日期相同。该函数将 return 一个包含用户年龄的整数。

    func getAgeFromBirthdate() -> Int {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "MM/dd/yyyy"
    let birthday = UserDefaults.standard.object(forKey: "birthday")
    let birthdayString = birthday as! String
    let birthdate = dateFormatter.date(from: birthdayString)
    let currentDate = Date()
    let calendar: Calendar = Calendar(identifier: .gregorian)
    let age = calendar.component(.year, from: birthdate!).distance(to: calendar.component(.year, from: currentDate))
    return age
}