你好在jquery里做一些时间计算。你觉得我用的是最好的方法吗?
<table width="100%" border="0" cellpadding="0">
<tr>
<td>Departure Time</td>
<td>Arrival Time</td>
<td>Difference</td>
</tr>
<tr>
<td><input name="departure" type="text" class="std1" id="departure" size="10" alt="time"/></td>
<td><input name="arrival" type="text" class="std1" id="arrival" size="10" alt="time"/></td>
<td><input name="duration" type="text" class="std" id="duration" size="10" readonly="readonly" alt="time"/></td>
</tr>
</table>
function hour2mins(timestr) {
var spltd = timestr.split(":");
if (spltd.length == 2) {
return parseInt(parseInt(spltd[0] * 60) + parseInt(spltd[1]));
} else {
return false;
}
}
function mins2hour(instr) {
var hourstr = parseInt(instr / 60);
if (hourstr.toString().length == 1) {
hourstr = "0" + (hourstr + '');
}
var minstr = parseInt(instr % 60);
if (minstr.toString().length == 1) {
minstr = "0" + (minstr + '');
}
return hourstr + ':' + minstr;
}
function tdiff(t1, t2) {
var t1 = hour2mins(t1);
var t2 = hour2mins(t2);
var ret = mins2hour(parseInt(t2 - t1));
if (t2 < t1) {
ret = mins2hour(parseInt(parseInt(t2 + 1440) - t1));
}
return ret;
}
$(function() {
$("input.std1").keyup(function(b) {
$("#duration").val(tdiff($("#departure").val(), $("#arrival").val()));
});
});
答案 0 :(得分:1)
您的代码不适用于以下输入:“07:09”,“07:07”。问题在于你的parseInt语句。
您应该始终将10
作为第二个参数传入,以便将其解析为十进制值。
return parseInt(parseInt(spltd[0] * 60, 10) + parseInt(spltd[1], 10));
此外,您不需要在parseInt中添加两个已解析的整数,因此只需
return parseInt(spltd[0] * 60, 10) + parseInt(spltd[1], 10);
在mins2hour中,你不需要这里的parseInt:
var hourstr = parseInt(instr / 60);
在这里:
var minstr = parseInt(instr % 60);
我猜你想要一个字符串作为这一点(正如你的名字所暗示的那样),所以应该是
var hourstr = "" + (instr / 60);
var minstr = "" + (instr % 60);
您的代码中还有一些不必要的parseInt用法。我建议你阅读有关parseInt的文档 - https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt