2017-01-18 129 views
0

很努力给定的总持续时间的分割后拿到propper持续时间值。谷歌Apps脚本我司期限

下面是函数的一个例子。这是实际功能的缩写版本。在实际函数中,我循环遍历一个范围,并将每个行持续时间(单元格设置为格式Time:h:mm:ss)合计到totDur中。我从较大的函数中获取了这个值,并明确地为此示例设置了值。令人困惑的是,这种方法在同一个函数中大约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- 10月1日至18日:20:33:443 MST] TOT DUR FORMATTED:3点06分22秒
[17-01-18 10:20:33:444 MST] BY REV:03:06:82分之22= 23 :50:50
[17-01-18 10:20:33:445 MST] BY GM:03:06:137分之22= 01:12:31

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

+0

日期只是自1970年以来,顶部一些奇特的方法毫秒,你真的需要使用日期呢?我宁愿尝试解析从电子表格中获取时间戳的持续时间,然后在计算后将其解析回来。 –

+0

感谢您的回复。你的评论让我重新思考这个过程。我最终将Value转换为毫秒并对其进行分割。然后重新格式化为HH:mm:ss。现在,减少代码和值的方法都是正确的。谢谢 – user3692874

回答