jQuery时差

时间:2011-06-29 11:27:29

标签: javascript jquery

你好在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()));
    });
});

link:http://jsfiddle.net/xmQD7/1/

1 个答案:

答案 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