首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google Script Apps编辑器-计算天数差异

Google Script Apps编辑器-计算天数差异
EN

Stack Overflow用户
提问于 2019-03-09 00:26:20
回答 1查看 132关注 0票数 0

我正在尝试计算两个日期之间的天数差

它将是NOW() -以下示例中数据中列出的日期,第一行(2019-03-08 - 2018-10-31) = 128天

代码语言:javascript
复制
Dates      Days Regions
2018-10-31  128 Alberta
2018-10-31  128 Alberta
2018-11-8   120 Alberta
2018-11-18  110 Alberta

数据集如下所示

问题是,每当用户更新"Dates“列时,我都会尝试计算出这个值。

下面是我尝试过的代码

代码语言:javascript
复制
function dategenerator() {
  const numberofHeaderRows=1
  var spreadsheet = SpreadsheetApp.getActiveSheet()
  var range = spreadsheet.getRange("A:A")
  var legitrange = spreadsheet.getDataRange().getValues()
  var rangeValuesInclHeaders = range.getValues()
  var rangeValuesExclHeaders = rangeValuesInclHeaders.slice(numberofHeaderRows)
  var dates=rangeValuesExclHeaders.map(function(row){return row[0]})

  for (var rowNumber=numberofHeaderRows;rowNumber<rangeValuesInclHeaders.length;rowNumber++){
    var row = rangeValuesInclHeaders[rowNumber]
    if (row[0]!==""){

    var dates = new Date(row[0])
    var datesnew = new Date()
    var t1 = datesnew.getTime()
    var t2 = dates.getTime()
    var diffInDays = Math.floor((t1 - t2)/(1000*60*60*24))
      Logger.log(diffInDays)
      spreadsheet.getRange(1,2,legitrange.length,1).setValue(diffInDays);
    }
  }
}

我在"diffInDays“下面看到了正确的值,但是,它只提取最后一个值,如下所示……

代码语言:javascript
复制
Dates      Days Regions
2018-10-31  110 Alberta
2018-10-31  110 Alberta
2018-11-8   110 Alberta
2018-11-18  110 Alberta

我们如何正确地执行此操作,以便它可以将计算出的值附加到正确的日期行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-09 03:00:04

计算第一列发生变化时的天数

代码语言:javascript
复制
function diffInDays(Start,End)
{
  if(Start && End)
  {
    var second=1000;
    var minute=60*second;
    var hour=minute*60;
    var day=hour*24;
    var t1=new Date(Start).valueOf();
    var t2=new Date(End).valueOf();
    var d=t2-t1;
    var days=Math.floor(d/day);
    return days;
  }
  else
  {
    throw('Invalid Inputs');
  }
}

function onEdit(e) {
  if(e.range.getSheet().getName()!='SheetName'){return;}//add sheetName
  if(e.range.columnStart==1 && e.value){
    e.range.offset(0,1).setValue(diffInDays(e.value,new Date());
  }
}

将第一列的格式设置为日期时间

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55067189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档