DevToolBox

年齢の数え方:満年齢と数え年、4月1日生まれが早生まれになる理由、2月29日生まれの扱い

公開日:

「4月1日生まれはなぜ早生まれなのか」「2月29日生まれの人は、うるう年以外はいつ年を取るのか」――年齢は身近な数字ですが、法律上の数え方は日常の感覚と少し違います。この記事では、満年齢・数え年の違い、法律上の年齢の数え方、学年の決まり方、プログラムで年齢を計算するときの注意点をまとめます。

満年齢と数え年

日本で年齢を表す方法には、主に次の2つがあります。

数え方 生まれた時点 年齢が増えるタイミング
満年齢 0歳 誕生日(法律上は誕生日の前日の終わり。後述)
数え年 1歳 毎年1月1日

現在、公的な書類や日常生活で使われるのは満年齢です。1950年に施行された「年齢のとなえ方に関する法律」で、国民は数え年ではなく満年齢で年齢を言い表すよう心がけること、国や地方公共団体は満年齢を用いることが定められました。数え年は、厄年や長寿のお祝い(還暦・古希など)といった伝統行事で使われることがあります。

法律上は「誕生日の前日」に年を取る

満年齢は、日常的には「誕生日に1歳増える」と考えますが、法律上は少し違います。

「年齢計算ニ関スル法律」では、年齢は生まれた日から数え始め(生まれた日を1日目として数える)、期間の計算には民法第143条のルールを使うと定めています。民法第143条では、年単位の期間は「起算日に応当する日の前日」に満了すると定められています。

これを当てはめると、年齢は誕生日の前日が終わる瞬間(午後12時)に1歳増えることになります。例えば4月1日生まれの人は、3月31日の終わりに年を取ります。

日常生活では誕生日に年を取ると考えて問題ありませんが、この違いが実際に影響する場面があります。それが学年です。

4月1日生まれが「早生まれ」になる理由

学校教育法では、子どもは「満6歳に達した日の翌日以後における最初の学年の初め」から小学校に入学すると定められています。そして学年は、学校教育法施行規則によって4月1日に始まり、翌年3月31日に終わります。

これを誕生日ごとに当てはめてみましょう(2020年生まれの場合)。

誕生日 満6歳に達する日 その翌日 入学する学年の初め
2020年4月1日 2026年3月31日 2026年4月1日 2026年4月1日
2020年4月2日 2026年4月1日 2026年4月2日 2027年4月1日

4月1日生まれの人は、法律上3月31日に6歳になるため、翌日の4月1日から始まる学年に入学できます。一方、4月2日生まれの人は4月1日に6歳になるため、その翌日以降で最初の学年の初めは翌年の4月1日になります。

その結果、**同じ学年になるのは「4月2日生まれ〜翌年4月1日生まれ」**となり、1月1日〜4月1日に生まれた人が、同じ年に生まれた人より1つ上の学年に入る「早生まれ」になります。

2月29日生まれの人はいつ年を取るのか

うるう年の2月29日に生まれた人は、うるう年以外の年には誕生日がありません。法律上は、民法第143条のルールに従って、うるう年以外の年は2月28日の終わりに年を取ると考えられます。

一方、日常生活や民間のサービスでは「3月1日を誕生日として扱う」「2月28日を誕生日として扱う」など、扱いが分かれます。システムで扱う場合は、どちらの考え方を採用するかを仕様として決めておく必要があります。

プログラムで年齢を計算するときの注意

年齢の計算は簡単そうに見えて、間違いやすい処理の代表です。

日数を365で割らない

経過日数を365(または365.25)で割って年齢を求めると、うるう年の影響で誕生日の前後に1歳ずれることがあります。年齢は、年の差を求めてから、今年の誕生日をまだ迎えていなければ1を引く方法で計算するのが確実です。

// 日常的な数え方(誕生日当日に1歳増える)で満年齢を求める
function calculateAge(birth, today) {
  let age = today.getFullYear() - birth.getFullYear();
  const hasHadBirthdayThisYear =
    today.getMonth() > birth.getMonth() ||
    (today.getMonth() === birth.getMonth() && today.getDate() >= birth.getDate());
  if (!hasHadBirthdayThisYear) {
    age -= 1;
  }
  return age;
}

Excelでは、=DATEDIF(生年月日, 基準日, "Y")で満年齢(満了した年数)を求められます。

生年月日は「日付」として保存する

生年月日を時刻付きの日時(例:1990-05-10T00:00:00Z)として保存すると、タイムゾーンの変換によって前日の日付として扱われることがあります。生年月日は、時刻を持たない日付型で保存し、日付として比較するのが安全です。

「どの時点の年齢か」を明確にする

年齢は基準日によって変わります。「申込日時点」「年度末時点」「4月1日時点」など、どの日を基準にするかは制度やサービスによって異なります。例えば、成年年齢は2022年4月1日から18歳に引き下げられています。年齢制限のある機能を作るときは、基準日と、誕生日当日に年を取る扱いでよいかを確認しておきましょう。

年齢計算ツールでは、生年月日と基準日を指定して、満年齢(年・月・日)、経過日数、次の誕生日までの日数を計算できます。本ツールは日常的な数え方に合わせ、誕生日当日に年齢が増える方法で計算しています。2つの日付の間の期間を求めたいときは期間計算ツールも便利です。

まとめ

  • 公的な年齢は満年齢。数え年は伝統行事などで使われる
  • 法律上、年齢は誕生日の前日の終わりに1歳増える
  • そのため4月1日生まれは前の学年に入り、「4月2日〜翌年4月1日生まれ」が同じ学年になる
  • 2月29日生まれの人は、法律上はうるう年以外の年は2月28日の終わりに年を取る
  • プログラムでは日数を365で割らず、年の差と誕生日の到来で計算する

参考

この記事で紹介したツール

生年月日と基準日から、満年齢・生まれてからの日数・次の誕生日までの日数を計算します。

2つの日時の差を日・時間・分・秒で計算します。

日時をISO 8601・RFC 2822・カスタム書式などへ変換(コンバーター)します。