LoginSignup
3
2

More than 3 years have passed since last update.

誕生日から年齢計算 (golang)

Last updated at Posted at 2018-09-15

よく使用される (今日の日付 - 誕生日) / 10000 で年齢を求める方法


func calcAge(t time.Time) (int, error) {
    // 現在日時を数値のみでフォーマット (YYYYMMDD)
    dateFormatOnlyNumber := "20060102" // YYYYMMDD

    now := time.Now().Format(dateFormatOnlyNumber)
    birthday := t.Format(dateFormatOnlyNumber)

    // 日付文字列をそのまま数値化
    nowInt, err := strconv.Atoi(now)
    if err != nil {
        return 0, err
    }
    birthdayInt, err := strconv.Atoi(birthday)
    if err != nil {
        return 0, err
    }

    // (今日の日付 - 誕生日) / 10000 = 年齢
    age := (nowInt - birthdayInt) / 10000
    return age, nil
}

環境によっては、intで返すのではなく、 null.Int を返すようにするのも良いかと思います
(DBから取得した誕生日の値がない場合はnullで返すなど)

3
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
3
2