Swiftの勉強中になんとなくやってみたくなったので、西暦から和暦に変換するファンクションを作成してみました。
func adFromEra(year: Int, month: Int, day: Int) -> String{
// 和暦を配列に入れる
let eraJpArray: Array<String> = ["明治", "大正", "昭和", "平成"]
// 引数 year, month, day をデートフォーマット用にString(YYYY/MM/DD)にする
let strConverDay: String = String(year) + "/" + String(month) + "/" + String(day)
// デートフォーマットを yyyy/MM/dd の形式にセットする
// (リアルタイムな日付じゃないので、JPフォーマットにする必要はなし)
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy/MM/dd"
// 引数から来た、年月日を2001年1月1日 0:0 00 から何秒かに変換
let convertDay = dateFormatter.dateFromString(strConverDay)!.timeIntervalSinceReferenceDate
// 各年号(明治、大正、昭和、平成)の開始日の年月日を2001年1月1日 0:0 00 から何秒かに変換
let maiji = dateFormatter.dateFromString("1868/10/23")!.timeIntervalSinceReferenceDate
let taisyo = dateFormatter.dateFromString("1912/7/30")!.timeIntervalSinceReferenceDate
let syowa = dateFormatter.dateFromString("1926/12/26")!.timeIntervalSinceReferenceDate
let heisei = dateFormatter.dateFromString("1989/1/7")!.timeIntervalSinceReferenceDate
/*
* 引数から来た、年月日が年号の間にあるか比較
*
* return 元号と和暦
*/
switch(convertDay) {
case maiji..<taisyo:
return eraJpArray[0] + String(year - 1867)
case taisyo..<syowa:
return eraJpArray[1] + String(year - 1911)
case syowa..<heisei:
return eraJpArray[2] + String(year - 1925)
default:
return eraJpArray[3] + String(year - 1988)
}
}