2017-01-18 125 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

回答