Swift 通过出生日期的字符串计算年龄

/**
     通过出生日期的字符串获得
     
     - parameter birthdayStr: 出生日期的字符串     
     - returns: 年龄
     */
    func getAge(birthdayStr:String) ->Int{
        //======字符串转NSDate
        let dateFormater = NSDateFormatter()
        dateFormater.dateFormat = "yyyy-MM-dd"
        dateFormater.locale = NSLocale.currentLocale()
        let date = dateFormater.dateFromString(birthdayStr)

        //=======date设为当前时区
        let zone = NSTimeZone.systemTimeZone()
        let interval = Double(zone.secondsFromGMTForDate(date!))
        let lastDate = date?.dateByAddingTimeInterval(interval)
        
        //调用方法 通过lastDate获得年龄
        return ageWithDateOfBirth(lastDate!)
    }
    
    /**
     通过日期获得
     
     - parameter date: 出生日期
     
     - returns: 年龄
     */
    func ageWithDateOfBirth(date: NSDate) -> NSInteger {
        
        //NSDateComponents 只是一个容器,容器中详细有年月日时分等信息。
        //=========获得出生的年月日
        var components1 = NSCalendar.currentCalendar().components(.Year, fromDate: date)
        let birthYear = components1.year
        components1 = NSCalendar.currentCalendar().components(.Month, fromDate: date)
        let birthMouth = components1.month
        components1 = NSCalendar.currentCalendar().components(.Day, fromDate: date)
        
        let birthDay = components1.day
        
        //==========获得当前的年月日
        var components2 = NSCalendar.currentCalendar().components(.Year, fromDate: NSDate())
        
        let currentYear = components2.year
        components2 = NSCalendar.currentCalendar().components(.Year, fromDate: NSDate())
        let currentMouth = components2.month
        components2 = NSCalendar.currentCalendar().components(.Year, fromDate: NSDate())
        let currentDay = components2.day
        
        var age = currentYear - birthYear
        if ((currentMouth > birthMouth) || (currentMouth == birthMouth && currentDay >= birthDay)){
            age++
        }
        
        return age
    }


转载于:https://my.oschina.net/u/1476033/blog/663693

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值