swift4 UIDatePickerの指定した年月日から年齢を出力するコード


前回、「swift4 UIDatePickerからUITextfieldへ出力まで」で記事を書いたので
その続きの、

「UIDatePickerの指定した年月日から年齢を出力するコード」
https://qiita.com/ryomaDsakamoto/items/ab4ae031706a8133f193

について書いていきます。

そのコードがこいつ。※前回の記事を参照しながらどうぞ。

BirthdayViewController.swift
import UIKit

class BirthdayViewController: UIViewController {

    //UITextfieldに紐づいてる
    @IBOutlet weak var dateField: UITextField!

    //UIDatePickerを定義するための変数
    var datePicker: UIDatePicker = UIDatePicker()


    override func viewDidLoad() {
        super.viewDidLoad()

        // ピッカー設定
        datePicker.datePickerMode = UIDatePickerMode.date
        datePicker.timeZone = NSTimeZone.local
        datePicker.locale = Locale.current
        dateField.inputView = datePicker

        // 決定バーの生成
        let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 35))
        let spacelItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
        let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(done))
        toolbar.setItems([spacelItem, doneItem], animated: true)

        // インプットビュー設定(紐づいているUITextfieldへ代入)
        dateField.inputView = datePicker
        dateField.inputAccessoryView = toolbar
    }

    // UIDatePickerのDoneを押したら発火
    @objc func done() {
        dateField.endEditing(true)

        // 日付のフォーマット
        let formatter = DateFormatter()

        //"yyyy年MM月dd日"を"yyyy/MM/dd"したりして出力の仕方を好きに変更できるよ
        formatter.dateFormat = "yyyy年MM月dd日"

        //(from: datePicker.date))を指定してあげることで
        //datePickerで指定した日付が表示される
        dateField.text = "\(formatter.string(from: datePicker.date))"


        // 本当はNSDate()じゃない方がいいと思う。
        let now = Date()
        print("今日は\(now))です")

        let Age = now.timeIntervalSince(datePicker.date)//生まれてからの秒数

        let myAge2 = Int(Age)//秒齢
        let myAge3 = Double(myAge2)
        let myAge4 = Int(myAge2/60/60/24)//日齢
        let myAge5 = Int(myAge3/60/60/24/365.24)//年齢_端数の切り捨て:満年齢:整数Integer

        //ログから出力されていることを確認、
        print("年齢は満\(myAge5)歳です")



    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

実際のpickerで確認すると、こんな感じで出力されているはず。

あとはlabelで出力したいtextで出力したりやりたい放題です。