2016-06-27 5 views
1

私は数Xと日付にかかるjavascript関数を持って、そして日のX数離れて新しいDateを返します追加時にJavascriptの日が間違っていますか?

function addDays(theDate, numDaysToAdd) { 
    var newDate = new Date(); 
    return new Date(newDate.setDate(theDate.getDate() + numDaysToAdd)); 
} 

私はそれをSat Jul 02 2016 16:03:06 GMT-0700 (Pacific Daylight Time)ある日や数7を通過し、私が得た結果はThu Jun 09 2016 16:05:32 GMT-0700 (Pacific Daylight Time)でした。なぜ私に正しい日付だが間違った月を与えるのか?

答えて

1

newDateは、現在の日付(new Date())から常に作成されるという問題があります。言い換えれば、この関数が6月に実行されると、6月に日付が生成され、その日付を入力日付からのオフセットとして設定しようとします。

function addDays(theDate, numDaysToAdd) { 
 
    var newDate = new Date(theDate); 
 
    newDate.setDate(theDate.getDate() + numDaysToAdd); 
 
    return newDate; 
 
} 
 

 
var d = new Date('Sat Jul 02 2016 16:03:06 GMT-0700 (Pacific Daylight Time)'); 
 
console.log(addDays(d, 7).toString());

:あなたは theDateのコピーとして newDateを構築する必要が

1

与えられた日付にミリ秒数を追加すると、正しい日付が生成されます。

getTime()は、epochからミリ秒を返します。

オフセット= numDaysToAdd * 24 * 60 * 60 * 1000;

24:日中時間

60:時間

60で分:分

1000秒:二

Dateコンストラクタでミリ秒エポックからのミリ秒かかります

function addDays(theDate, numDaysToAdd) { 
    var start = theDate.getTime(); 
    var offset = numDaysToAdd * 24 * 60 * 60 * 1000; 
    return new Date(start + offset); 
} 

var today = new Date(); 
console.log(today, addDays(today, 10)); 
関連する問題