如何使用日期选择器计算年/月/年的年龄?

时间:2017-04-03 03:20:23

标签: swift

我正在上学。需要使用日期选择器计算用户的年龄,考虑日期,月份和年份。 我已经说过,如果用户选择的月份大于当前月份,则结果为:currentYear - userYear。问题是我不知道如何考虑日子。

import UIKit
import Foundation
class ViewController: UIViewController {
    func quitarTeclado() {
        nombreField.resignFirstResponder()
        origenField.resignFirstResponder()
    }

    @IBAction func dateChanged(_ sender: Any) {
    }
    @IBOutlet var datePicker: UIDatePicker!

    @IBAction func tap(_ sender: UITapGestureRecognizer) {
      quitarTeclado()
    }

    @IBOutlet var nombreField: UITextField!
    @IBOutlet var origenField: UITextField!
    @IBOutlet var lblResultado: UILabel!
    @IBAction func btnCalcular(_ sender: Any) {
        let calendar = Calendar.current
        let components = calendar.dateComponents([.year,.month,.day], from: Date())
        let currentDay = components.day
        let currentMonth = components.month
        let currentYear = components.year

        let userComponents = calendar.dateComponents([.year,.month,.day], from: datePicker.date)
        let userDay = userComponents.day
        let userMonth = userComponents.month
        let userYear = userComponents.year

        let restaYear = currentYear! - userYear!
        let restaMonth = currentMonth! - userMonth!
        let restaDay = currentDay! - userDay!

        if nombreField.text != "" && origenField.text != "" {
            if restaDay >= 0 && restaMonth >= 0 {
                lblResultado.text = "\(restaYear)"
            }
            else {
                lblResultado.text = "\(restaYear - 1)"
            }
            if lblResultado.text == "-1" {
                lblResultado.text = "0"
            }
        }else {
            let alerta = UIAlertController(title: "Error", message: "Introduzca todos los datos", preferredStyle: .alert)

            let ok = UIAlertAction(title: "Okay", style: .default, handler: nil)

            alerta.addAction(ok)

            self.present(alerta, animated: true, completion: nil)
        }
    }
}

0 个答案:

没有答案