2017-01-18 12 views
0

Ich habe Probleme, nach der Aufteilung einer gegebenen Gesamtzeitdauer einen propelleren Dauerwert zu erhalten.Google Apps Script Duration Division

Hier ist ein Beispiel für die Funktion. Dies ist eine verkürzte Version der realen Funktion. In der realen Funktion schleife ich einen Bereich und summiere jede Zeilendauer (Zellen, die auf Format Zeit: h: mm: ss gesetzt sind) in totDur. Ich nahm den Wert von der größeren Funktion und nur explizit den Wert für dieses Beispiel. Die Sache, die verwirrend ist, ist, dass diese Methode für ungefähr 25 andere Berechnungen der Dauerverteilung in der gleichen Funktion gut funktioniert, aber nicht für diese. Ich habe das Gefühl, dass es sich auf den Datentyp oder etwas in diesem Sinne bezieht.

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')) 
 
    
 
    
 
}

Hier ist die sich ergebende Log Output:

[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] DURCH REV: 03: 06: 22/82 = 23 : 50: 50
[17.01.18 10: 20: 33: 445 MST] VON GM: 03: 06: 22/137 = 01: 12: 31

TOT DUR Wert ist korrekt, aber die anderen beiden nicht. Ich nehme an, ich führe die Division nicht richtig durch. Offensichtlich 3 Stunden 6 Minuten 22 Sekunden geteilt durch 82 ist nicht 23 Stunden.

+0

Daten sind nur die Millisekunden seit 1970 mit einigen ausgefallenen Methoden auf, haben Sie wirklich Termine für diese verwenden müssen? Ich würde lieber versuchen, die Zeitspannen von den Zeitstempeln aus der Tabelle zu analysieren und sie dann nach den Berechnungen wieder zu analysieren. –

+0

Danke für die Antwort. Dein Kommentar hat mich dazu veranlasst, den Prozess zu überdenken. Ich habe den Wert schließlich in Millisekunden umgewandelt und die Division ausgeführt. Danach in HH umformatiert: mm: ss. Viel weniger Code und Werte sind jetzt alle korrekt. Vielen Dank – user3692874

Antwort

Verwandte Themen