2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

dayjsを使用して生年月日から年齢を算出する

Last updated at Posted at 2021-03-18

下記の記事を参考にしながらdayjsを使用して生年月日を算出していきます。
Moment.jsを使って年齢計算

環境

nuxt.jsのcompositionAPIを使用
@nuxtjs/dayjsのモジュールをインストール済み

実際のコード


function calcAge(birthday) {
  const today = $dayjs()
  const birthDate = $dayjs(birthday)
  const baseAge = today.year() - birthDate.year()
  const thisBirthday = $dayjs(`${today.year()}-${birthDate.month() + 1}-${birthDate.date()}`)
  return today.isBefore(thisBirthday) ? baseAge - 1 : baseAge
}

少しコメントを加えると

// 筆者の誕生日 birthday = 1998-06-03 とする
function calcAge(birthday) {
  // 今日の日付を取得
  const today = $dayjs()
  // => d {$L: "ja", $d: Thu Mar 18 2021 09:13:01 GMT+0900 (日本標準時), $x: {…}, $y: 2021, $M: 2, …}

  // birthdayをパースする
  const birthDate = $dayjs(birthday)
  // => d {$L: "ja", $d: Wed Jun 03 1998 00:00:00 GMT+0900 (日本標準時), $x: {…}, $y: 1998, $M: 5, …}

  // 単純に現在の年から生年月日を引く
  const baseAge = today.year() - birthDate.year()
  // => 23

  // 今年の誕生日を取得
  const thisBirthday = $dayjs(`${today.year()}-${birthDate.month() + 1}-${birthDate.date()}`)
  // => {$L: "ja", $d: Thu Jun 03 2021 00:00:00 GMT+0900 (日本標準時), $x: {…}, $y: 2021, $M: 5, …}

  // 今年の誕生日が今日より前であればまだ誕生日は来ていないという事なので1引く
  const age = today.isBefore(thisBirthday) ? baseAge - 1 : baseAge
  // => 22

  return age
}

いくつか実際にやってみる

calcAge('1994-5-25')
=> 26

calcAge('19920820')
=> 28

calcAge('1998-08-10')
=> 22

問題なさそうですね。
以上です。参考になればLGTMいただけると幸いです。

追記

コメントで指摘いただいたのですが、単純にyearの差分だけで出せるみたいです。

const birthday = $dayjs('1998-06-03')
const today = $dayjs('2021-04-22')

console.log(today.diff(birthday, 'year'))
=> 22

なのでリファクタリングすると下記のようになります。

function calcAge(birthday) {
  const today = $dayjs()
  const age today.diff(birthday, 'year')
  return age
}
2
0
2

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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?