女性に年齢を聞くのは非常に失礼だから、学生時代に好きだったアイドルを聞くようにしている。
光GENJIと答えたら、昭和47年組付近、嵐って答えたら、平成の始めぐらい、こういう情報って知っておくと意外とコンパ受けするからね・・・
という飲みネタではなく、今回は生年月日と年齢についてのデータ処理。
データベースに登録するのは、年齢ではなく生年月日というセオリー
基本的に年齢をデータベースに登録するアホなやつはいないと思うけど、生年月日を入れるよね。
だって1年経ったら年齢って変わるから・・・
そんな事も知らずに、とあるシステムで年齢を入れてユーザー管理をしようとしているサービスがあったんだが、1年後にいろいろなトラブルが発生しそうだな・・・
そんなアホシステムはどうでもいいのだが、生年月日を登録した場合に、そこから年齢を算出したくもなる。
だって、エクセルにユーザー一覧として並べた時に、20代、30代ってわかりやすくしたいのが本音です。
今現在の西暦から、生年月日の西暦を引けばいいだけかと思った人は、はい駄目〜!!!
またポカミスをします。
「俺、3月だから早生まれなんだよね。なので学年でいうと1つ上」ってこだわりがちな人って意外と少なくないから。
ちゃんと月まで計算してあげないといけないと考えるとなんだかめんどくさい。
うるう年なんかの計算をしなければいけないかと考えると、ホントにめんどくさい。
年齢の計算方法
そこで、スニペットを作っておいた。
JSであれば以下の関数をコピればいいだけ。
function birthday2age(birthday){
if(!birthday){return "";}
var age = "";
var dt = new Date();
var today_y = String(dt.getFullYear());
var today_m = String(dt.getMonth() + 1).padStart(2,"0");
var today_d = String(dt.getDate()).padStart(2,"0");
if(!birth){return;}
age = Math.floor((Number(today_y + today_m + today_d) - Number(birthday.y + birthday.m + birthday.d)) / 10000);
return age;
};
ちなみに、送り値のbirthdayは以下のようなデータ構造にしておくこと。
birthday = {
y : 2000,
m : 1,
d : 1
};
いかがでしょうか?明日が誕生日で二十歳を迎える人でもちゃんと19歳って表示されますよ。
こういうスニペットって、仕事の現場でたま〜に必要になることがあるので、作りためておくと超便利なこと間違いない!!!
0 件のコメント:
コメントを投稿