指定年月日からn日後、n日前の年月日を求める
説明
指定日後、指定日前を求めるにはDateオブジェクトを生成する時に引数としてミリ秒を渡します。指定年月日からのn日後を求めるのでnew Date()でDateオブジェクトを作成した後にsetFullYear()、setMonth()、setDate()で年月日を指定します。設定後getTime()でミリ秒を取得します。n日後を求めるので1日あたりのミリ秒(86400000 = 1000*60*60*24)と先ほど求めたミリ秒数を加算し、new Date()で新しいDateオブジェクトを作成します。これでgetMonth()、getDate()などでn日後の日付情報を得ることができます。サンプルでは-5など負数も指定できます。この場合、n日前が算出されます。
サンプルプログラム
window.onload = function(){
document.getElementById("calcButton").onclick = function(){
var y = document.getElementById("year").value;
var m = document.getElementById("month").value;
var d = document.getElementById("date").value;
var pd = document.getElementById("pDate").value;
var dtObj = calcDate(pd,y,m,d);
var Y = dtObj.getFullYear();
var M = dtObj.getMonth()+1;
var D = dtObj.getDate();
document.getElementById("result").innerHTML = Y+"年"+M+"月"+D+"日";
}
}
function calcDate(n, y,m,d){
var n = parseInt(n);
var nmsec = n * 1000 * 60 * 60 * 24; // 1日のミリ秒
var msec = (new Date(""+y+"/"+m+"/"+d)).getTime();
return new Date(msec + nmsec );
}