我正在尝试使用日期进行for循环,但它没有按计划进行。 我想做的是在单元格A1中输入开始日期,在单元格B1中输入结束日期。 然后运行一个for循环:如果startdate小于enddate,则将日期放入单元格A2中,然后转到下一列。我唯一的困扰是如何在日期中添加一天。
请参见下面的代码:
function test()
{
var app = SpreadsheetApp;
var ss = app.getActive();
var sheet = ss.getActiveSheet();
var start = sheet.getRange("A1").getValue();
var end = sheet.getRange("B1").getValue();
var day = 3600*24*1000;
var diff = Math.floor((end-start)/day);
var column = 1;
for(var i=0;i<=diff;i++)
{
sheet.getRange(2, column).setValue(start+i*day);
column++;
}
}
有人可以向我解释为什么它不起作用。 非常感谢
答案 0 :(得分:0)
假设开始是一个日期,那么您的问题是:
start + i * day
在使用+
运算符的情况下,左操作数(日期)是一个对象,因此被简化为带有提示字符串的原语,因此+
被视为字符串连接,而不是数字
您可以尝试:
+start + i * day
强制开始为数字,但结果将是数字,而不是日期。此外,它也不处理一天的时间问题。建议您先复制开始日期,这样您就无需修改它,然后按the duplicate递增副本:
function test() {
var app = SpreadsheetApp;
var ss = app.getActive();
var sheet = ss.getActiveSheet();
var start = sheet.getRange("A1").getValue();
start = new Date(+start);
var end = sheet.getRange("B1").getValue();
var column = 1;
for (var i=0; start <= end; i++) {
sheet.getRange(2, column++).setValue(new Date(start.setDate(start.getDate() + 1)));
}
}