2015-10-17 64 views
0
var start_date = new Date(ss.getSheetByName('3D Tracker').getRange('I119').getValue()); 

使用調試工具開始日期計算結果爲Wed Oct 01 2014 00:00:00 GMT-0400 (EDT)我想創建一個新的變量,它開始加10天預期。記錄儀的日期對象不如使用的setDate

var start = start_date; 
var end = new Date(start.setDate(start.getDate() + 10)); 

輸出是:

start: Sat Oct 11 2014 00:00:00 GMT-0400 (EDT) 
end: Sat Oct 11 2014 00:00:00 GMT-0400 (EDT) 

我的預期開始保持Wed Oct 01 2014 00:00:00 GMT-0400和結束是Sat Oct 11 2014 00:00:00 GMT-0400 (EDT)。不知何故,我的腳本加入了10天以開始以及結束,而我只需添加10天即可結束。

我錯過了什麼嗎?環境是基於Javascript的Google Apps腳本。

+2

您正在呼籲啓動的setDate()這將修改開始日期 –

回答

2

setDate()在返回所計算的值之前,首先修改它調用的Date對象。因此,您在從該更新的時間戳創建end之前10天移動start

如果您想使用setDate()而不更改start,您首先需要從中創建new Date()

var start = new Date(ss.getSheetByName('3D Tracker').getRange('I119').getValue()); 

var end = new Date(start.getValue()); // initially match `start` 
end.setDate(end.getDate() + 10);  // change to 10 days later 

對於一個班輪,還可以計算出新的時間戳,與10 * 24 * 60 * 60 * 1000等於毫秒數爲10天:

var end = new Date(start.getValue() + 10 * 24 * 60 * 60 * 1000);