2017-07-12 4 views
-1

Ich habe Code zur Berechnung der Zeitdifferenz und es funktioniert gut. Ich muss die Methode ändern (tatsächlich habe ich eine weitere Methode unter bestimmten Bedingungen hinzugefügt). Die Methode, die ich in einer Bedingung hinzugefügt habe, wenn das Textfeld den Wert Istirahat hat, und dann muss ich die Methode auf den Zeitunterschied ändern, den ich minus eine Stunde gemacht habe.So berechnen Sie den Zeitunterschied mit jQuery

Ich denke, es wird verwirrend sein, meine Erklärung ohne den Code zu sehen.

Hier ist der Code:

$(document).ready(function() { 
 
    var $time1 = $("#start"); 
 
    var $time2 = $("#end"); 
 
    var $diff = $("#jam_total"); 
 

 
    function updateHours() { 
 
     var dtStart = new Date("7/20/2015 " + $time1.val()); 
 
     var dtEnd = new Date("7/20/2015 " + $time2.val()); 
 
     var stats1 = $("#status_check").val(); 
 

 
     if(stats1!='ISTIRAHAT') { 
 
      var diff = ((dtEnd - dtStart))/1000; 
 
     } else if(stats1!='TANPA ISTIRAHAT') { 
 
      var diff = ((((dtEnd - dtStart))/1000) - 1); 
 
     } 
 
     var totalTime = 0; 
 

 
     if (diff > 60*60*12) { 
 
      totalTime = formatDate(60*60*12); 
 
     } else { 
 
      totalTime = formatDate(diff); 
 
     } 
 

 
     $diff.val(totalTime); 
 
    } 
 

 
    function formatDate(diff) { 
 
     var hours = parseInt(diff/3600) % 24; 
 
     var minutes = parseInt(diff/60) % 60; 
 
     var seconds = diff % 60; 
 

 
     return (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes); 
 
    } 
 

 
    $("#option2").on("change", function() { 
 
     if($time1.val() && $time2.val()) { 
 
      updateHours(); 
 
     } 
 
    }); 
 
});
<input type="time" id="start" name="logintime"/> 
 
<input type="time" id="end"name="logouttime" /> 
 
<br /><br /> 
 
<select name="option2" id="option2" onchange="Choose1(this)" style="float:left"> 
 
    <option value="-">-</option> 
 
    <option value="istirahat">istirahat</option> 
 
    <option value="tanpa istirahat">tanpa istirahat</option> 
 
</select> 
 
<input type="text" name="status_check" size="8" readonly="readonly" id="status_check" style="text-transform:uppercase" /> 
 
<br /><br /> 
 
Total: <input type="text" id="jam_total" type="text" name="jam_total" size="18" readonly="readonly"> 
 
<br /><br /> 
 
<script> 
 
function Choose1(data) { 
 
    document.getElementById("status_check").value = data.value; 
 
} 
 
</script>

Versuchen Sie, die jQuery-Funktion im Code wie folgt zu überprüfen:

else if (stats1 != 'TANPA ISTIRAHAT') { 
    var diff = ((((dtEnd - dtStart))/1000) - 1); 
} 

var diff = (((dtEnd - dtStart))/1000) - 1) ist, was ich meine, dass Code gewonnen‘ Ich arbeite perfekt wie ich will. Was ich will ist wie folgt:

Bitte überprüfen Sie den Code im Inneren, wenn var diff = ((dtEnd - dtStart))/1000; Ich möchte das Ergebnis dieses Codes minus eine Stunde sein.

+0

https://stackoverflow.com/a/43192439/4229270 – Sinto

+0

nicht das Problem hier verstanden. Was genau funktioniert nicht? – abhishekkannojia

+0

der Code innerhalb der 'if else Bedingung '. Ich möchte während Bedingung machen {TANPA ISTIRAHAT} die Funktion wird die Funktion für die Berechnung der Zeit tun, aber es muss minus eine Stunde –

Antwort

0

Zunächst einmal gibt es eine Sache falsch, müssen Sie stats1 auf UpperCase setzen, sonst können Sie nicht korrekt vergleichen. Die zweite Sache ist, dass Sie Zeit über Sekunden berechnen, sollten Sie minus 60*60 (3600 bis minus 1 Stunden).

function updateHours(){ 
    var dtStart = new Date("7/20/2015 " + $time1.val()); 
    var dtEnd = new Date("7/20/2015 " + $time2.val()); 
     var stats1 = $("#status_check").val().toUpperCase(); 
// if you don't add toUpperCase, istirahat won't be equal to ISTIRAHAT so everytime.. 
// first if block will be executed 
    if(stats1!='ISTIRAHAT'){ 
     var diff = ((dtEnd - dtStart))/1000; 
     } 
    else if(stats1!='TANPA ISTIRAHAT'){ 

     var diff = ((((dtEnd - dtStart))/1000) - 3600); // and you should minus 3600 
     } 
    var totalTime = 0; 

    if (diff > 60*60*12) { 
     totalTime = formatDate(60*60*12); 
     ; 
    } else { 
     totalTime = formatDate(diff); 
    } 

    $diff.val(totalTime); 

} 

Hier ist die Arbeits fiddle

Hoffnung hilft,

+0

thx @Berkay. für die Berechnung der Zeit muss ich Zeitformat für die Berechnung richtig nutzen? –

+0

Sicher, es liegt an dir. @ MinervazMine – Berkay

Verwandte Themen