JavaScriptの標準ライブラリのDateを利用して年齢を計算する機能を作成してみました。
コード
age.html
<div id="text-button">
<p id="countAge">年齢</p>
</div>
age.css
#text-button {
display: block;
cursor: pointer;
width: 500px;
text-align: center;
border: 1px solid #232323;
}
age.js
function countage(){
const today = new Date();
const birth = new Date(1997, 01, 01);
const birthYear = 1997;
const birthMonth = 2;
const birthDay = 1;
let nowYear = today.getFullYear();
let nowMonth = today.getMonth() + 1;
let nowDay = today.getDate();
const nowHours = today.getHours();
const nowMinutes = today.getMinutes();
const nowSeconds = today.getSeconds();
if(nowMonth === 1){
nowMonth = 13;
nowYear -= 1;
};
count = (`私が誕生してから${nowYear - birthYear}年${nowMonth - birthMonth}ヶ月${nowDay - birthDay}日${nowHours}時間${nowMinutes}分${nowSeconds}秒経ちました!`);
document.getElementById("text-button").onclick = function(){
document.getElementById("countAge").innerHTML = count;
};
};
setInterval("countage();",1000);
結果
こちらを実行するとサイト上に「年齢」という欄が出てくるので、この文字をクリックすると「私が誕生してから○○経ちました。」とちゃんと表示されました。
クリックするたびに更新もしてくれます。
課題点
日付間の計算をプログラムする時に一番気をつけなければならないのは、「月」です。
例えば1月1日と2月5日の間は「1ヶ月と4日」なので純粋に引き算すれば大丈夫です。
一方1月6日と2月5日の間は「0ヶ月と30日」となるので複雑になります。
この部分で躓き、どのような数字にも当てはまるようなプログラムは書けなかったので、今後勉強していきたいです。