datePicker(終章):年齢を計算する

やめようと思ったが、どういしても気になって眠れない。
なんとか頑張って、ついにゴールに到着した。

年齢を計算するには、日付をNSDdate型に変換し、
let myAge = myNextBirthday.timeIntervalSinceDate(myBirthday)のように
date2.timeintervalSinceDate(date1)を用いて秒数を獲得して、これを年に直す。

このままだと閏年を含め正確に計算されて端数がでる。
このため閏年の補正をして通常イメージの年数に合わせる処置を加える。


*まとめ*
・時間は秒数で計算される
・期間はtimeIntervalSinceDateを用いて計算する
・入力した日付はプログラム上グレゴリオ暦で処理される(日本より9時間前の時間になる)
・正確には閏年を含めて計算されるので、通常のイメージの年数にするには補正が必要

これで、日付の取り扱いはようやく終わった。次は、プレイグランドではなく、実装して試す予定(時期未定)。

(根を詰めすぎて、モウお疲れです)
__________________________________
(忘備録)年齢の計算
プレイグランド用
____________________
// Playground - noun: a place where people can play
// 年齢を計算する
// 誕生日をNSDate型に変換して定義
// 時間(秒数)を年数に変換
// 閏年の補正が必要
// yasui_swift
// Xcode7.1 Swift2
//  2015_11_4
import UIKit
var message = "Happy Birthday!"
print(message)

let age = NSDateFormatter()//dateFormatterをageの名前に設定
age.dateFormat = "yyyy/MM/dd"

var myNextBirthday = age.dateFromString("2015/11/16")!//!のつけ忘れに注意
print(myNextBirthday)//時間をいれないと0時0分になるー>2015-11-15 15:00:00 +0000

let myBirthday = age.dateFromString("1950/11/16")!
print(myBirthday)

let myAge = myNextBirthday.timeIntervalSinceDate(myBirthday)
print(myAge/24/60/60/365)//閏年を含んでいるので端数がでる

var myAge2 = myAge-16*24*60*60//閏年の補正:年を4で割る値で補正する
print(myAge2/365/24/60/60)//できました!
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
Happy Birthday!
2015-11-15 15:00:00 +0000
1950-11-15 15:00:00 +0000
65.0438356164384
65.0
===========================