var start_date = new Date(ss.getSheetByName('3D Tracker').getRange('I119').getValue());
使用调试工具开始日期评估为Wed Oct 01 2014 00:00:00 GMT-0400 (EDT)
我想创建一个新的变量,即开始加10天。
var start = start_date;
var end = new Date(start.setDate(start.getDate() + 10));
Logger的输出是:
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脚本。
答案 0 :(得分:2)
setDate()
首先修改它所调用的Date
对象。因此,您在从更新的时间戳创建start
之前的10天内移动end
。
如果您想在不更改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);