【问题标题】:Increment date in Google ScriptGoogle 脚本中的递增日期
【发布时间】:2020-10-18 17:33:31
【问题描述】:

我只想将单元格 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);

}

【问题讨论】:

标签: javascript date google-apps-script google-sheets increment


【解决方案1】:

问题/说明:

在这部分代码中:

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_newdate_given 返回相同值的原因。

为了将它们分开,您需要创建date_given 的副本,这将是一个新的日期对象:

date_new = new Date(date_given);

因此如果您稍后修改date_newdate_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);

}

【讨论】:

  • 这是有道理的!非常感谢!
猜你喜欢
  • 2011-04-15
  • 2014-02-12
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-09
  • 1970-01-01
相关资源
最近更新 更多