2017-05-08 88 views
0

我想用JavaScript計算ot小時數,但它好像是一個很長的代碼。而不是整個小時,當半小時變得複雜的時候。這是我的代碼到目前爲止。if語句計算ot小時

<script> 
$(function(){ 
    $('#intime,#outtime').on('input', function() { 
     // declare variables 
     var intime = new moment($("#intime").val(), 'HH:mm:ss'); // get value of intime 
     var outtime= new moment($("#outtime").val(), 'HH:mm:ss'); 

     var startTime = new moment("08:00:00", 'HH:mm:ss'); 
     var halfDay = new moment("12:30:00", 'HH:mm:ss'); 
     var wholeDay = new moment("18:00:00", 'HH:mm:ss'); 


     var othours = 0; // declare day as 0 
     /*AFTER 18.00*/ 
     if (moment(intime).hour() == 8 && (moment(outtime).hour() == 18 && moment(outtime).minute() == 30)) { 
      othours = 0.5; 
     } 
     else if (moment(intime).hour() == 8 && (moment(outtime).hour() == 19 && moment(outtime).minute() == 30)) { 
      othours = 1.5; 
     } 
     else if (moment(intime).hour() == 8 && (moment(outtime).hour() == 20 && moment(outtime).minute() == 30)) { 
      othours = 2.5; 
     } 
     else if (moment(intime).hour() == 8 && (moment(outtime).hour() == 21 && moment(outtime).minute() == 30)) { 
      othours = moment(outtime).hour() && moment(outtime).minute() - moment(wholeDay).hour() && moment(wholeDay).minute(); 
     } 
     else if (moment(intime).hour() == 8 && (moment(outtime).hour() == 22 && moment(outtime).minute() == 30)) { 
      othours = 4.5; 
     } 
     else if (moment(intime).hour() == 8 && (moment(outtime).hour() == 23 && moment(outtime).minute() == 30)) { 
      othours = 5.5; 
     } 
     else if (moment(intime).hour() == 8 && (moment(outtime).hour() == 00 && moment(outtime).minute() == 30)) { 
      othours = 6.5; 
     } 
     /*BEFORE 8.00*/ 
     else if (moment(intime).hour() == 8 && (moment(outtime).hour() == 00 && moment(outtime).minute() == 30)) { 
      othours = 6.5; 
     } 
     else if (moment(intime).hour() == 8 && (moment(outtime).hour() == 00 && moment(outtime).minute() == 30)) { 
      othours = 6.5; 
     } 

     /*WHOLE HOURS*/ 
     else if (moment(intime).hour() == 8 && moment(outtime).hour() > 18) { 
      othours = moment(outtime).hour() - moment(wholeDay).hour(); 
     } 
     else if (moment(intime).hour() < 8 && moment(outtime).hour() > 18) { 
      othours = moment(startTime).hour() - moment(intime).hour() + moment(outtime).hour() - moment(wholeDay).hour(); 
     } 
     else if (moment(intime).hour() < 8 && moment(outtime).hour() == 18) { 
      othours = moment(startTime).hour() - moment(intime).hour(); 
     } 
     $("#othours").val(othours); 

    }); 
}) 
</script> 

是否有任何更短的方法,或者我是否還需要繼續這樣的其他半小時?如果在時間= 6.30和時間= 19.30,則應該是3小時。

enter image description here

這是我的輸出。我想計算OT小時,當我進入時間和離開時間

+0

你想要什麼你的輸出它是非常複雜的你的代碼。我不明白你想要什麼...... –

+0

對於初學者來說,當你可以將它們存儲在簡單變量中時,不要一次又一次調用相同的函數。 – charlietfl

+0

但是你想要達到什麼目的? – Picard

回答

0

試試這個 -

<script> 
$(function(){ 
    $('#intime,#outtime').on('input', function() { 
     // declare variables 
     var intime = new moment($("#intime").val(), 'HH:mm:ss'); // get value of intime 
     var outtime= new moment($("#outtime").val(), 'HH:mm:ss'); 

     var othours = 0; // declare day as 0 

     othours = moment.utc(moment(outtime,"DD/MM/YYYY HH:mm:ss").diff(moment(intime,"DD/MM/YYYY HH:mm:ss"))).format("HH") 
     if(othours>10) 
      $("#othours").val(othours-10); 
     else 
      $("#othours").val("Whole Day not work"); 

    }); 
}) 
</script> 
+0

我想計算分鐘也。謝謝:) – Lisa234

+0

你只需要改變格式(「HH:mm」) –

+0

intime = moment(銀泰).add(10,'hours'); (timetime,「DD/MM/YYYY HH:mm:ss」)。diff(moment(intime,「DD/MM/YYYY HH:mm:ss」)))。format 「HH:MM」); $(「#othours」)。val(othours); –

0

這部作品與我所期待的。

<script> 
$(function(){ 
    $('#intime,#outtime').on('input', function() { 
     // declare variables 
     var intime = new moment($("#intime").val(), 'HH:mm:ss'); // get value of intime 
     var outtime= new moment($("#outtime").val(), 'HH:mm:ss'); 

     var startTime = new moment("08:00:00", 'HH:mm:ss'); 
     var wholeDay = new moment("18:00:00", 'HH:mm:ss'); 

     var othours = 0; // declare othours as 0 

     if (moment(intime).hour() == 8 && (moment(outtime).hour() > 18 && moment(outtime).minute() == 30)) { 
      othours = moment(outtime).hour() - moment(wholeDay).hour() + 0.5; 
     } 
     else if (moment(intime).hour() == 8 && moment(outtime).hour() > 18) { 
      othours = moment(outtime).hour() - moment(wholeDay).hour(); 
     } 
     else if ((moment(intime).hour() < 8 && moment(intime).minute() == 30) && (moment(outtime).hour() > 18 && moment(outtime).minute() == 30)) { 
      othours = moment(startTime).hour() - moment(intime).hour() + moment(outtime).hour() - moment(wholeDay).hour(); 
     } 
     else if ((moment(intime).hour() < 8 && moment(intime).minute() == 30) && moment(outtime).hour() == 18) { 
      othours = moment(startTime).hour() - moment(intime).hour() - 0.5; 
     } 
     else if (moment(intime).hour() < 8 && moment(outtime).hour() == 18) { 
      othours = moment(startTime).hour() - moment(intime).hour(); 
     } 
     else if ((moment(intime).hour() < 8 && moment(intime).minute() == 30) && moment(outtime).hour() > 18) { 
      othours = moment(startTime).hour() - moment(intime).hour() + moment(outtime).hour() - moment(wholeDay).hour() - 0.5; 
     } 
     else if (moment(intime).hour() < 8 && (moment(outtime).hour() > 18) && moment(outtime).minute() == 30) { 
      othours = moment(startTime).hour() - moment(intime).hour() + moment(outtime).hour() - moment(wholeDay).hour() + 0.5; 
     } 

     $("#othours").val(othours); 

    }); 
}) 
</script>