指定年月日からnヶ月後の月日を返す


動作ブラウザ 【 IE:3.0   NN:6.0
Internet Explorer Netscape Navigator Opera iCab Safari
3.0x 4.0x 4.5 5.0x 5.5 6.0 2.0x 3.0x 4.0x 4.x 6.0 7.0 7.x 2.x 1.x
Windows - × × × × -
Macintosh - × × × ×
UNIX - - - - - × × × × -

ポイント y = y + Math.floor((m + n) / 12); // 年数を加算 if ((n % 12) == 0) { if (n < 12) { m = 12; // 余りが0の場合は12月 y--; // 年数も1減らす } }else{ m = (m + (n % 12)) % 12; // 月を加算 if (m == 0) m = 12; }
説  明 指定年月日からnヶ月後の月日を求めるには何ヶ月後かの月の部分の値を年と月に加算します。nヶ月後のnを12で割り算し小数点以下を切り捨てた値を年数に加算し、月は12で割った余りを加算します。ただし、12月の場合は余りが0になってしまうので別途処理します。この場合、1年経過しているかどうか調べ1年未満の場合のみ年数を減らし月を再設定する処理を行います。
サンプル <html> <head> <title>指定年月日からnヶ月後の月日を返す</title> <script language="JavaScript"><!-- function calcMD(n) { n = eval(n); dt = document.myFORM.days.value; dt = dt.split("/"); y = eval(dt[0]); // 年 m = eval(dt[1]); // 月 d = eval(dt[2]); // 日 y = y + Math.floor((m + n) / 12); // 年数を加算 if ((n % 12) == 0) { if (n < 12) { m = 12; // 余りが0の場合は12月 y--; // 年数も1減らす } }else{ m = (m + (n % 12)) % 12; // 月を加算 if (m == 0) m = 12; } alert(n+"ヶ月後は"+y+"年"+m+"月"+d+"日です"); } // --></script> </head> <body> 指定年月日からnヶ月後の月日を返す<br> <form name="myFORM"> 日付:<input type="text" value="2004/9/30" name="days"> <select onChange="calcMD(this.value)"> <option value="0">選択して下さい</option> <option value="1">1ヶ月後</option> <option value="2">2ヶ月後</option> <option value="3">3ヶ月後</option> <option value="4">4ヶ月後</option> <option value="5">5ヶ月後</option> <option value="6">6ヶ月後</option> <option value="7">7ヶ月後</option> <option value="8">8ヶ月後</option> <option value="9">9ヶ月後</option> <option value="10">10ヶ月後</option> <option value="11">11ヶ月後</option> <option value="12">12ヶ月後</option> <option value="13">13ヶ月後</option> <option value="14">14ヶ月後</option> <option value="15">15ヶ月後</option> <option value="18">18ヶ月後</option> <option value="24">24ヶ月後</option> <option value="36">36ヶ月後</option> </select> </form> </body> </html>
補足説明 なし

■サンプルスクリプトを実行する >>実行
■各ブラウザでの動作結果を見る >>View!

写真素材 PIXTA