在没有Date对象的javascript中添加时间

时间:2017-11-06 11:51:15

标签: javascript html html5

我正在努力增加时间。我没有使用Date对象,也不想使用。

假设我从下面选择4小时下拉: -

<select class="form-control" id="hr-sel" name="hour" required>
  <option value="" selected>Decide Hour</option>
  <option value="4">4 |  550</option>
  <option value="6">6 | 750</option>
  <option value="9">9 | 1000</option>
  <option value="12">12 | 1200</option>
</select>

从输入类型日期选择下面的3:00。

<input class="form-control" placeholder="Pick Time" type="text" id="pick_time" name="pick" onfocus="(this.type='time')" onfocusout="(this.type='text')"; onchange="make_call();" onblur="setDropTime(hr,this.value);" required>

我希望下面的表单在7:00之前自动更新。

<input class="form-control" id="drop_time" name="drop" placeholder="Drop Time" type="text" onfocus="(this.type='time')" onfocusout="(this.type='text')"; required>

但它合并了两个值。比如4小时和3点,我就43。

以下是我试过的JS功能。请帮助我。

function setDropTime(hours, pick_time) {
   var hours = document.forms["book"]["hr-sel"].value;
    sum = hours + pick_time;

  return sum;
}

请帮帮我。

1 个答案:

答案 0 :(得分:0)

首先,我们需要解析显示的项目。 如果我们在几分钟内完成数学计算,那么我们最容易接受。

为了保持概述,而不是重复自己,创建一个可以将时间字符串解析为几分钟的函数

function parseTimeToMinutes(timeValue)
{
    //we split the input on the ':' symbol, so we get an arrray
    //with the hours and minutes (still as strings)
    var separated_values = timeValue.split(':');
    var num_hours = parseInt(separated_values[0]);
    var num_minutes = parseInt(separated_values[1]);

    //figure out the total number of minutes so we can do our math
    var sum_minutes = num_minutes + (num_hours * 60);
    return sum_minutes;
}

我们还需要一个函数来从我们的分钟数回溯 到一个字符串。

function formatAsTime(numericValue)
{
    var restingMinutes = numericValue % 60;
    var hours = Math.floor(numericValue / 60);
    return hours + ":" + ("0" + restingMinutes).slice(-2);
}

然后你可以这样做

//please note : your code looks very confusing at this point,
//i'm not entirely sure this is how your form works.
//so your mileage may vary. use this as a guiding example : 
function setDropTime() {
     var originalTime = parseTimeToMinutes(document.getElementById('Pick Time').value);
     var timeToAdd = parseTimeToMinutes(document.getElementById('drop_time').value));

     var minutesTotal = originalTime + timeToAdd;

     return formatAsTime(minutesTotal);
}