Google 脚本中的增量日期

我只想将单元格 A1 中的给定日期增加 1 天。我需要两个单独的变量,一个用于给定日期,一个用于新的递增日期。问题是,我的代码总是更改两个变量,我不知道为什么。


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 = 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);


}


HUX布斯
浏览 133回答 1
1回答

森栏

问题/解释:在这部分代码中:date_new = date_given;您传递了对的引用。date_givendate_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 A1var 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);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript