2017-05-08 13 views
0

javascriptで時間を計算したいのですが、非常に長いコードのようです。それは半時間になると複雑になります。これはこれまでの私のコードです。if文で時間を計算する

<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> 

さらに短い方法がありますか、他の半時間もこのように続行する必要がありますか? intime = 6.30、outtime = 19.30の場合と同様に、時間は3時間でなければなりません。

enter image description here

これが私の出力です。私が入力したときにおける時間とアウト時間

+0

出力には何が欲しいのですか?コードは非常に複雑です。私はあなたが何を望んでいるのか理解できません... –

+0

初心者のために、単純な変数にそれらを一度格納することができたら、何度も同じ機能を呼び出さないでください – charlietfl

+0

しかし、何を達成しようとしていますか? – Picard

答えて

0

を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 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 =モーメント(intime).add(10、 'hours'); othours = moment.utc(瞬間(outtime、 "DD/MM/YYYY HH:mm:ss")。 "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>