Google Apps脚本持续时间部门

时间:2017-01-18 17:21:23

标签: google-apps-script

在给定的总持续时间划分后,我很难获得适当的持续时间值。

以下是该功能的示例。这是真实功能的缩写版本。在实际函数中,我循环遍历一个范围并将每一行持续时间(单元格设置为格式化时间:h:mm:ss)汇总为totDur。我从较大的函数中获取了this的值,并且只显式设置了此示例的值。令人困惑的是,这种方法适用于同一函数中约25个其他持续时间的除法计算,但不适用于此。我感觉它与数据类型有关,或者与此有关。

function myFunction() {
  
  var totDur=new Date();
  var totRev=137;
  var totCtr=82
  totDur.setUTCHours(0,0,0,0);
  
  totDur=-301170516818000;
  
  Logger.log('TOT DUR:'+totDur)
  var nTime = new Date();
  nTime.setUTCHours(0,0,0,0);
  var diffGm=totDur-nTime;
  var diffRev=totDur-nTime;
  
  var divGm=diffGm/totCtr;
  var divRev=diffRev/totRev;
  
  Logger.log('TOT DUR: '+Utilities.formatDate(new Date(totDur), 'UTC', 'HH:mm:ss'))
  Logger.log('BY REV: '+Utilities.formatDate(new Date(diffRev), 'UTC', 'HH:mm:ss')+'/'+totCtr+'='+Utilities.formatDate(new Date(divRev), 'UTC', 'HH:mm:ss'))
  Logger.log('BY GM: '+Utilities.formatDate(new Date(diffGm), 'UTC', 'HH:mm:ss')+'/'+totRev+'='+Utilities.formatDate(new Date(divGm), 'UTC', 'HH:mm:ss'))
  
  
}

以下是生成的日志输出:

[17-01-18 10:20:33:442 MST] TOT DUR UNFORMATTED:-301170516818000
[17-01-18 10:20:33:443 MST] TOT DUR FORMATTED:03:06:22
[17-01-18 10:20:33:444 MST] BY REV:03:06:22/82 = 23:50:50
[17-01-18 10:20:33:445 MST] BY GM:03:06:22/137 = 01:12:31

TOT DUR值是正确的,但其他两个不是。我假设我正在进行不正确的分组。显然3小时6分22秒除以82不是23小时。

1 个答案:

答案 0 :(得分:0)

我正在过度思考这个过程。将值转换为毫秒后,我执行除法,然后使用下面链接中的一个非常简单的函数转换回HH:mm:ss格式。

https://coderwall.com/p/wkdefg/converting-milliseconds-to-hh-mm-ss-mmm