jQuery时差

你好在jquery做一些时间计算。 你认为我用的是最好的方式吗?

Departure Time Arrival Time Difference
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())); }); });

链接: http : //jsfiddle.net/xmQD7/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