使用Jquery将时间转换为十进制

时间:2016-01-14 21:20:55

标签: javascript jquery time

我想将时间(min:sec:hs)转换为十进制。在逗号为秒之前和逗号之后为小数秒。就像是: 02:10:55 = 130,55 (2 * 60 + 10)& (0.55)

HTML

<form>
Min: <input type="number" id="min" onkeyup="myFunction()">
Sec: <input type="number" id="sec" onkeyup="myFunction()">
Hon: <input type="number" id="hon" onkeyup="myFunction()">
<p class="result"></p> 
</form>

JQUERY

<script type="text/javascript">
function myFunction() {
var num1 = $("input[id='min']").val(),
num2 = $("input[id='sec']").val(),
num3 = $("input[id='hon']").val(),
result = parseInt(num1) * 60 + parseInt(num2);
$(".result").text(result);
}
</script>

感谢@Andrew Brooke,我用这段代码解决了它:

result = parseInt(num1) * 60 + parseInt(num2) + "." + parseInt(num3)

现在我有另一个问题。即使我只填写一个字段,我也希望得到结果。现在,如果其中一个字段为空,我会 NaN

任何帮助将不胜感激。提前谢谢,

2 个答案:

答案 0 :(得分:1)

对于第一个问题,您可以将字符串与逗号

连接起来
result = parseInt(num1) * 60 + parseInt(num2) + "," + parseInt(num3);

对于第二个问题,一个简单的解决方案是检查文本框是否为空,如果是,则给num1, num2, or num3一个值0。喜欢这个

var num1 = $("input[id='min']").val() != "" ? $("input[id='min']").val() : 0,
    num2 = $("input[id='sec']").val() != "" ? $("input[id='sec']").val() : 0,
    num3 = $("input[id='hon']").val() != "" ? $("input[id='hon']").val() : 0,
...

答案 1 :(得分:1)

更简洁的方法是使用Number(),当传递空字符串时将返回0。作为旁注,我会重命名您的变量以使其更具可读性,并使用$("#min")代替$("input[id='min']")

var hon = Number($("#hon").val()),
    min = Number($("#min").val()),
    sec = Number($("#sec").val());

您还想将sec转换为小数,对吗?您可以使用sec / 60执行此操作。因此,您应该使用:

计算result
var result = hon + min * 60 + sec / 60;