kintoneが生年月日から年齢を計算出来ないので、javascriptで出来るようにしてみた。

kintoneが生年月日から年齢を計算出来ないので、javascriptで出来るようにしてみた。

age

一応サンプルコードもあるが、うるう年を考えていないので自作した
https://cybozudev.zendesk.com/hc/ja/articles/202640900-%E7%B5%8C%E9%81%8E%E5%B9%B4%E6%95%B0%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B

年月計算は、コンピュータ的に面倒なのだが、年齢を出すだけなら簡単なアルゴリズムがある


1, 年月日の年は、4ケタ左シフト(1万倍にする)する。1987年なら19870000
2, 年月日の月は、2ケタ左シフト(100倍にする。1月は0なので+100からスタート)する。8月なら800
3, 年月日の日は、そのまま。13日なら13
4, 以上を全部足す。19870000+800+13 = 19870813
5, 現在日付(20140813)から引く。20140813-19870814 = 269999
6, それを割る1万して下4ケタを削除すると、年齢が算出される。ギリギリ、まだ26歳という計算になる(笑)

参照URL: http://d.hatena.ne.jp/toku-hiro/20070824

この計算方法の優れた所は、年・月・日を単独で計算して、足らなかったら上位からマイナスするという点!
単純ながら、確実な年齢計算が出来る優れたアルゴリズムです!

イメージ的には
年(yyyy0000):20140000 – 19870000 = 260000
月(0000mm00):00000800 – 00000800 = 0
日(000000dd):00000013 – 00000014 = -1

250000 + (0) + (-1) = 269999
という計算になります。ちなみに日数計算はできません。あくまで年数計算のみ
各ケタの位取りを、4ケタ(年)・2ケタ(1-12月)・2ケタ(1-31日)と上手く利用している(年齢が欲しいだけなら、この計算方法が一番だと思う)
アルゴリズムとは何か?と考えさせる、良い計算方法ですね。

実際のjavascriptコードは、以下の通り