如何计算小时和的小时数

时间:2015-07-29 09:49:08

标签: javascript jquery

你能帮助我得到十进制的小时数。我真的不知道怎么问。

总和7.6应该是8小时,因为我的数据是0.1小时直到0.5小时。你们可以帮助我得到这笔钱,而不是得到* .6直到* .9?

function change() {
       var h1 = $('#hs1').val();
       var h2 = $('#hs2').val();
       var h3 = $('#hs3').val();
       var h4 = $('#hs4').val();
       var sum = parseFloat(h1) + parseFloat(h2)  + parseFloat(h3) + parseFloat(h4);
       document.getElementById("the_sum").innerHTML = parseFloat(sum).toFixed(1);
    }

这是我的代码,用于在更改下拉列表中计算总和。

我实际上想要小数。但我不希望它只是0.6直到0.5因为我计算十进制的小时数。 $ hour_arr = array(0.1,0.2,0.3,0.4,0.5,1,1.1,1.2,1.3,1.4,1.5,2,2.1,2.2,2.3,2.4,2.5,3,3.1,3.2,3.3,3.4 ,3.5,4,4.1,4.2,4.3,4.4,4.5,5,5.1,5.2,5.3,5.4,5.5,6,6.1,6.2,6.3,6.4,6.5,7,7 .1,7.2,7.3, 7.4,7.5,8);

例如0.1 + 0.2 + 0.3 = 0.6这是小时。 0.6应该是1小时。不是0.6。 0.7应该是1.1小时。你们明白我的问题吗?

我希望得到0.1小时+0.2小时+ 0.3小时= 1小时。不是0.6小时。帮帮我们

5 个答案:

答案 0 :(得分:0)

   document.getElementById("the_sum").innerHTML = Math.ceil(sum);

答案 1 :(得分:0)

您想要做的是以小时为单位显示所选时间?

所以

20min + 20min + 20min = 1.0
30min + 20min + 30min = 1.333333

您应该使用分钟作为选择框的值,并将总和除以60得到浮点数:

HTML:

<select id="hs1" onchange="change()">
    <option value="0"></option>
    <option value="10">10</option>
    <option value="20">20</option>
    <option value="30">30</option>
</select>
<select id="hs2" onchange="change()">
    <option value="0"></option>
    <option value="10">10</option>
    <option value="20">20</option>
    <option value="30">30</option>
</select>
<select id="hs3" onchange="change()">
    <option value="0"></option>
    <option value="10">10</option>
    <option value="20">20</option>
    <option value="30">30</option>
</select>
<select id="hs4" onchange="change()">
    <option value="0"></option>
    <option value="10">10</option>
    <option value="20">20</option>
    <option value="30">30</option>
</select>

<div id="the_sum"></div>

JS:

$('#hs1, #hs2, #hs3, #hs4').change(function() {
    var h1 = $('#hs1').val();
    var h2 = $('#hs2').val();
    var h3 = $('#hs3').val();
    var h4 = $('#hs4').val();
    var sum = parseFloat(h1) + parseFloat(h2)  + parseFloat(h3) + parseFloat(h4);
    $("#the_sum").html(parseFloat(sum / 60).toFixed(1));
});

DEMO:https://jsfiddle.net/fzyxfbfz/

答案 2 :(得分:0)

好的,7.9分8小时30分钟......所以请使用此

sum = sum.toString().split(".");
console.log(sum);
sum = parseFloat(sum[0]) + parseFloat( parseInt(sum[1])>6 ? 1+(parseInt(sum[1])-6)/10 : sum[1] );

然后你可以再次拆分以获得分开的小时和分钟

https://jsfiddle.net/62yv7dt0/

答案 3 :(得分:0)

好的,这是另一次尝试:

DEMO:https://jsfiddle.net/fzyxfbfz/3/

HTML:

<select id="hs1">
</select>
<select id="hs2">
</select>
<select id="hs3">
</select>
<select id="hs4">
</select>

<div id="the_sum"></div>

JS:

//This is just to populate the select boxes with values from 0 to 8
var arrData = new Array();
for(i=0;i<=8;i+=0.1) {
 arrData.push(i.toFixed(1));   
}
$('#hs1, #hs2, #hs3, #hs4').each(function() {
    for(i=0;i<arrData.length;i++) {
      $(this).append('<option value="' + arrData[i] + '">' + arrData[i] + '</option>');   
    }
});

$('#hs1, #hs2, #hs3, #hs4').change(function() {
    var h1 = $('#hs1').val();
    var h2 = $('#hs2').val();
    var h3 = $('#hs3').val();
    var h4 = $('#hs4').val();

    //Calculate the sum
    var sum = parseFloat(h1) + parseFloat(h2)  + parseFloat(h3) + parseFloat(h4);
    sum = parseFloat(sum).toFixed(1);
    var parts = sum.split('.');

    parts[1] = parseFloat(parts[1]);
    parts[0] = parseFloat(parts[0]);
    if(parts[1] >= 6) {
     parts[1] -= 6;
     parts[0] += 1;
    }
    $("#the_sum").html(parts.join('.'));
});

答案 4 :(得分:0)

&#13;
&#13;
$(document).ready(function(){
  $('select').on('change', updateSum);
});

function updateSum(){
  var hours = 0,
      sum = 0;
  $('select option:selected').each(function(i, option){
    sum += parseInt($(option).val());
  });
  var hours = sum / 60.0;
  
  $('#sum').text(sum + ' minutes = ' + hours + ' hours');
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id='hs1'>
  <option value='0'>Select</option>
  <option value='10'>10 minutes</option>
  <option value='20'>20 minutes</option>
  <option value='30'>30 minutes</option>
  <option value='40'>40 minutes</option>
  <option value='50'>50 minutes</option>
  <option value='60'>1 hour</option>
</select>

<select id='hs3'>
  <option value='0'>Select</option>
  <option value='10'>10 minutes</option>
  <option value='20'>20 minutes</option>
  <option value='30'>30 minutes</option>
  <option value='40'>40 minutes</option>
  <option value='50'>50 minutes</option>
  <option value='60'>1 hour</option>
</select>

<select id='hs3'>
  <option value='0'>Select</option>
  <option value='10'>10 minutes</option>
  <option value='20'>20 minutes</option>
  <option value='30'>30 minutes</option>
  <option value='40'>40 minutes</option>
  <option value='50'>50 minutes</option>
  <option value='60'>1 hour</option>
</select>

<select id='hs4'>
  <option value='0'>Select</option>
  <option value='10'>10 minutes</option>
  <option value='20'>20 minutes</option>
  <option value='30'>30 minutes</option>
  <option value='40'>40 minutes</option>
  <option value='50'>50 minutes</option>
  <option value='60'>1 hour</option>
</select>

<div>Sum: <span id='sum'></span></div>
&#13;
&#13;
&#13;