今日、2月25日は僕の誕生日らしいです。アバウトの自己紹介欄を見てみると、昨日まで23歳となっていたところが、24歳となっています。
ところで、この部分のソースを見てみると以下のようになっています。
1988年2月25日生まれの現在<span id="amyuage">17</span>歳の男です。
なんと、24歳ではなく17歳と書いてあります。つまり、JavaScriptで制御して誕生日が来たら自動的に年齢を増やすプログラムを書いているのですが、どういうコードを書いているかというと、以下のようなコードです。
var d = new Date(); var year = d.getYear(); var today; if(year < 1900){ today = (d.getYear()+1900)*10000+(d.getMonth()+1)*100+d.getDate(); }else{ today = d.getYear()*10000+(d.getMonth()+1)*100+d.getDate(); } var birthday = 19880225; var ageTag = document.getElementById("amyuage"); ageTag.innerHTML = Math.floor((today-birthday)/10000);
今見てみると、yearという変数は作る必要ないだろと(もしくは、yearという変数作ったら、その後はgetYear()使うなと)突っ込まれそうなのですが、とにかくやってることは、8ケタの現在の日付(今日だと20120225)から、8ケタの生年月日(この例でいうと19880225)を引いて、その数を10000で割った数を小数点以下を切り捨てしているのが現在の年齢になるわけです。
では、試しにフォームで作ってみます。とやろうと思ったのですが、なんだかWordPressではうまくいかなかったので却下。いったい何が原因なんだろ・・・。
なお、小数点切り捨てにMath.floorを使っていますが、チルダ演算子(~)を二度使っても同じことができるそうです。
Math.floor を使わずに小数を整数にする - IT戦記
コメント