LoginSignup
2
2

More than 5 years have passed since last update.

Swift2.2で西暦から和暦に変換するファンクション

Last updated at Posted at 2016-06-11

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)
    }
}
2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2