生年月日から年齢を計算する簡単な計算式
最近知ったんですが、生年月日から年齢を計算する簡単な計算式というのがあるそうです。
(今日の日付-誕生日)/10000の小数点以下切捨て。
PHPで書くとこんな感じです。
echo (int)((20070608 - 19850101)/10000);
※補足1(2007/8/21)
「公の世界では年齢の判断って業務ごとに異なり、誕生日の前日に年齢取得させる業務が多い」とのことを聞きました。くわしくはこちらをご覧ください。alittlethingさん、ご指摘ありがとうございました。
| Permalink
TrackBack
Listed below are links to weblogs that reference 生年月日から年齢を計算する簡単な計算式:
» 誕生日から年齢を計算する簡単な方法 [浜村拓夫の世界]
コンピューターで年齢を計算する簡単な方法がありました。
生年月日から年齢を計算する簡単な計算式
(今日の日付-誕生日)/10000の小数点以下切捨て。
言われてみれば当たり前だけど、シンプルなのでちょっと感動しました。
... [Read More]
Tracked on June 10, 2007 11:12 AM
» [PHP]年齢を計算する [逃走航路@hatena]
sanonosa システム管理コラム集: 生年月日から年齢を計算する簡単な計算式 WEB+DB PRESS Vol.38の連載に日付の計算に関する特集があって、まとめで、年齢を計算するにはみたいな、考察がかかれていたんですけど、この方法を使えばstrtotimeとかを複雑に駆使する必要はない... [Read More]
Tracked on June 10, 2007 11:36 PM
» 年齢の計算 [Puppyのパソコンさぽーと]
本日は"sanonosa システム管理コラム集"様のページより記事の紹介-生年月日から年齢を計算する簡単な計算式->最近知ったんですが、生年月日から年齢を計算する簡単な計算式というのがあるそうです。>(今日の日付-誕生日)/10000の小数点以下切捨て。>PHPで書くとこんな...... [Read More]
Tracked on June 11, 2007 04:55 PM
» [備忘]年齢の計算式 [夢見るころをすぎても]
これまでいろいろのたうち回って年齢計算をしていましたが、こんなに簡単な方法があるなんて。 年齢を計算したい時点の日付をYYYYMMDDと書き誕生日をyyyymmddとすれば (YYYYMMDD−yyyymmdd)÷10000 で出た結果の小数点以下を切り捨... [Read More]
Tracked on June 21, 2007 10:28 AM
» [ソフト開発][ネタ]「生年月日から年齢の簡単計算式」は、[これはひどい]か [よくわかりません]
[ネタ]タグがほとんどなく、ホントに実用コードとして感心してるっぽいブクマの数々。トリビア的ネタなら構わないけど、実用コードとして見ると、自分の最初の直感的感覚は[これはひどい]だった。 最近知ったんですが、生年月日から年齢を計算する簡単な計算式というのがあ... [Read More]
Tracked on August 27, 2007 01:06 PM
» [雑記]「生年月日から年齢を計算する簡単な計算式」は使えるとは限らない [ある地方公務員電算担当のナヤミ]
先週はブログをお休みさせていただきました。 お休みの間にも多くの方にご覧頂いていたようです。ありがたいことです。 ブログの更新が止まっていてもカウンタが回っていることにちょっと驚きです。 ブログをお休みしていた間にも、いくつかの気になる記事が出ていたようで... [Read More]
Tracked on August 27, 2007 07:38 PM
Comments
おお!
...と思いましたが、考えてみれば当たり前の計算式ですねぇ。
Posted by: YSK | June 08, 2007 11:03 PM
二種の情報処理試験に出た事もあったね
Posted by: でら | June 09, 2007 08:14 PM
2000年01月03日生まれの人の誕生日を、
2010年01月02日と
2010年01月03日と
2010年01月04日と
3時点で計算するとすべて10となりますが…
Posted by: しまけん | June 09, 2007 10:14 PM
しまけんさん
こちらで試したところ、9,10,10になりましたよ。なんでだろ?
<?php
echo (int)((20100102 - 20000103)/10000) ."<br>";
echo (int)((20100103 - 20000103)/10000) ."<br>";
echo (int)((20100104 - 20000103)/10000);
print "\n";
?>
9
10
10
Posted by: sanonosa | June 09, 2007 10:26 PM
> > 3時点で計算するとすべて10となりますが…
> こちらで試したところ、9,10,10になりましたよ。なんでだろ?
誕生日の前日に年齢がインクリメントされるべきである、ということでは?
Posted by: 通りすがり | June 10, 2007 07:01 AM
コメントありがとうございます。
「誕生日の前日に年齢がインクリメントされるべきである」というのは法律を誤って解釈しているかと思います。前日ではなくて前日の満了時が正しいようです。よって特に問題なさそうです。詳細は以下をご覧ください。
http://ja.wikipedia.org/wiki/%E5%B9%B4%E9%BD%A2%E8%A8%88%E7%AE%97%E3%83%8B%E9%96%A2%E3%82%B9%E3%83%AB%E6%B3%95%E5%BE%8B
Posted by: sanonosa | June 10, 2007 01:47 PM
年齢計算自体が難しいのではなく、
今日の日付(西暦)の取得方法がOS/言語でまちまちであることと、
生年月日のほとんどが和暦で、西暦に変換するのが面倒臭いのです。
Posted by: @@@@ | June 11, 2007 12:02 AM
はじめまして。いつも参考にさせていただいてます。
>前日ではなくて前日の満了時が正しいようです。よって特に問題なさそうです。
いえ、大きな問題なのです。
公の世界では年齢の判断って業務ごとに異なるのです。
誕生日の前日に年齢取得させる業務は多いですよ。
Posted by: alittlething | August 27, 2007 08:05 PM
alittlethingさん、コメントありがとうございます。
なんと!貴重なご意見ありがとうございました。
早速補足として追加させていただきます。
Posted by: sanonosa | August 28, 2007 10:34 AM
[これはひどい]は、このエントリがひどいというよりも、ネタ的コードを、実用コードとして賞賛の嵐で迎えている人達が、[これはひどい]なのだと思います。
Posted by: r-west | August 30, 2007 12:19 AM
r-westさん、コメントありがとうございます。
なるほど~、そういうことですね。(補足の内容を修正します)
だとしてもやはり[これはひどい]タグは陰口っぽくてやはり好きになれないなぁ。
Posted by: sanonosa | August 30, 2007 10:37 AM