1 回答
TA贡献1810条经验 获得超5个赞
问题/解释:
在这部分代码中:
date_new = date_given;
您传递了对的引用。date_given
date_new
即,您所做的任何更改date_new
都会自动应用,date_given
因为它们引用相同的日期对象。
当您将日期递增 1 时:
date_new = new Date(date_new.setDate(date_new.getDate() +1 ));
那个部分:date_new.setDate(date_new.getDate() +1 )
增量(更改)date_new
,因此date_given
也被修改,因为它们都引用同一个对象。
这就是为什么date_new
和date_given
返回相同的值。
为了将它们分开,您需要创建一个副本,其中date_given
将是一个新的日期对象:
date_new = new Date(date_given);
因此,如果您以后修改date_new
,date_given
将不会被修改。
解决方案:
function testDate() {
var sht_test = SpreadsheetApp.getActive().getSheetByName('Test');
var date_given = sht_test.getRange(1,1).getValue(); // type a Date in cell A1
var date_new;
date_new = new Date(date_given);
date_new = new Date(date_new.setDate(date_new.getDate() +1 ));
sht_test.getRange(2,1).setValue(date_new);
sht_test.getRange(2,2).setValue(date_given);
}
添加回答
举报