PHP 誕生日から年齢計算と日本国法
何も考えずに誕生日から年齢計算をするのは簡単です。
しかし何も考えないと訴訟問題に発展するのが年齢計算でもあります。
PHPなら
int(([基準日]-[生年月日])/10000) や floor(([基準日]-[生年月日])/10000) で計算できます。
ex : (int)((date(‘Ymd’)-19901010)/10000);
MySQLなら
SELECT (YEAR(CURDATE())-YEAR(‘1990-10-10’)) – (RIGHT(CURDATE(),5)<RIGHT(‘1990-10-10’,5)) AS age;
以上なのですが…
1日ずれます。
日本はいろいろとめんどくさい部分があります。
まず法律
●年齢計算ニ関スル法律
明治35年12月2日法律第50号 現行法です。
- 年齢は出生の日より之を起算す
- 民法第143条の規定は年齢の計算に之を準用す
- 明治6年第36号布告は之を廃止す
わずか54文字の法律でシンプルなのですが、いろいろと問題があります。
通常期間計算において「起算日」は、初日を省いて翌日とするのが原則です。
たとえば結婚記念日。 何を持って記念とするかはおいておいて、入籍日が10月10日の場合、毎年10月10日が結婚記念日となります。
これは10月11日を起算日として、翌年10月10日が結婚何周年としているからです。
祝い事で考えた場合、誕生日も同じ考え方なのですが、法律は起算日がその日が起算日になっています。
すなわち10月10日生まれなら10月9日に満年齢が1つ加算されるのです。
この考え方の不一致がそもそもの問題なのです。
そして年齢が関係する法律はたくさんあります。
例えば義務教育や、運転免許取得年齢、選挙権や参政権、国家資格など年金受給年齢など様々なところで法律に年齢が出てきます。
そしてその法律解釈によりプログラミングが変わります。
具体的に言うと「誕生日前日」と「誕生日当日」から効力を持つ法律があります。
1.「×歳に達した日」の場合、誕生日の前日0時から効力を持つ。
2.「×歳以上」「×歳に満たない者」など「日」を含まない場合、時間単位と解釈され午後12時に効力を持ちます。
3.「×歳に達した日の翌日」は単純に誕生日をさします。
このように私たちが日常的に使っている年齢計算は1日遅れています。
商店が顧客誕生日に年齢付でDMを送る分にはいいんでしょうが、満年齢は誕生日の前日に加算されるので注意が必要です。
\n”;
$tassuruFlg=1;
echo “$birthdayDate:$anyDate:$tassuruFlg = “.getAge($birthdayDate,$anyDate,$tassuruFlg).”
\n”;
$anyDate=”20131010″;
$tassuruFlg=0;
echo “$birthdayDate:$anyDate:$tassuruFlg = “.getAge($birthdayDate,$anyDate,$tassuruFlg).”
\n”;
$tassuruFlg=1;
echo “$birthdayDate:$anyDate:$tassuruFlg = “.getAge($birthdayDate,$anyDate,$tassuruFlg).”
\n”;
?>
実行結果
19901010:20131009:0 = 22
19901010:20131009:1 = 23
19901010:20131010:0 = 23
19901010:20131010:1 = 23
MySQLなら
こんな感じでしょうか
SELECT (YEAR(NOW())-YEAR(‘1990-10-10’)) – (DATE_FORMAT(‘1990-10-10’ – INTERVAL 1 DAY , ‘%m-%d’ ) > DATE_FORMAT(NOW(), ‘%m-%d’ )) AS age;
メタ文字などを変にエスケープされてしまうので、元ファイルをダウンロードできるようにしました。
●download●
http://blog.sensuishi.net/download/?f=getAge.zip
この年齢計算に関する法律と学校教育法の関係から、4月1日生まれの人は3/31に満六歳になり、学校教育法に学年は4/1~翌年3/31とし、保護者は子女の満6才に達した日の翌日以後における最初の学年の初めから、満12才に達した日の属する学年の終わりまで、小学校に通わせるように定められているので、所謂早生まれ扱いになります。
また公職選挙法とも矛盾が生じているとの見解もありますが、私は「選挙の期日により算定する」と定められているので期日すなわち「日」を含み、午前0時に効力を持つものだと思います。
しかし午後12時に選挙権や被選挙権を有する様になり、実際に投票に行く時にはまだ19歳であるという問題が国会に提起された事もあります。
forPC
関連記事
-
-
coreserverでテストページ公開
まずはサーバーアカウントの取得(購入若しくはお試し) はじめてやる人はMINIで十分だ
-
-
RT-500KIとiPhone11、MacでVPN(L2PT)
iPhoneやMacで外出先からFAXの送受信をしたくなったので、NTT RT-500KIを使って
-
-
CentOS6.5 NTFSマウント
windowsマシンで使っているNTFSフォーマットのHDDなどを繋いだ際、マウントできないのでカー
-
-
光ネクスト 隼 PR-400MI ブリッジモード
フレッツ光ネクスト隼を導入した際に設置されたPR-400MIをブリッジモードで運用しましたので、その
-
-
CentOS6.5でChromium
CentOS6.5にGoogle Chromeをインストールしようとしたところ、トランザクションエラ
-
-
CentOS6.5にFlash Player
Flashを使っているページに行くと残念な感じになるので、インストールしました。 rpm
-
-
WordPressでHighslide
ホームページでHighslideを使っていて、写真の多いブログの時にも使えたら便利だなぁってことで、
-
-
メモリ交換 1GB -> 4GB
PCの動きがあまりに遅く、買い替えまでがまんできなくなったのでネットで探して交換しました。 O
-
-
VALUE-DOMAINでドメイン取得
当サイトはVALUE-DOMAINとCORESERVERで安価に独自ドメインを運用しております。
-
-
WordPress 3.8.34 から5.5.1へアップデート
まずSSL化してからWordPress 3.8.34 から5.5.1へアップデートしました。特に難
forPC
- PREV
- 楽天でんわを使ってみて
- NEXT
- 初詣 成田山 大阪別院