时间计算

时间:2011-04-15 08:34:29

标签: jquery

我正在计算时间以计算列车的延误时间 安排时间:t1 到货时间:t2

function tomdiff(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;
}

//Calculate on Key up
    $("input.[rel=time1]").keyup(function (b){ $("#delaytime").val(tomdiff($("#schedule").val(),$("#arrival").val())); }); 

这很好用,但如果火车早点到达怎么办呢?

有人可以告诉我吗?

3 个答案:

答案 0 :(得分:0)

我可能没有正确理解这个问题,但是如果你正在计算列车延误并且没有延迟,则延迟为0。

没有

编辑:

使用我在下面提到的Date.js,你可以做像...这样的时髦的东西。

 Date.parse('now - 10 hours');
 Date.parse('15-04-2011').add(-1).day()

如果您确实使用DateJ,请注意文化/本地化

<!-- Set the CultureInfo to de-DE (German/Deutsch) -->
<script type="text/javascript" src="date-de-DE.js"></script>

答案 1 :(得分:0)

看起来你需要在那里添加一个日期字段。因此,在计算日期之前,您将首先检查t1和t2的日期。或者可能将它们转换为unix时间戳并对其进行计算(在添加日期之后)。

答案 2 :(得分:0)

根本问题在于,您尝试在午夜时间处理包裹(幻数1440分钟为24小时)且信息不足。

如果t1t2Date个实例,则代码不必完全按小时和分钟进行操作,并且不必担心午夜:

function tomdiff(t1, t2) {
    var msdiff;

    msdiff = t2 - t1; // When you perform arithmetic on dates, their
                      // underlying EpochMS value (milliseconds since
                      // Jan 1, 1970) is used
    return msdiff / 1000 / 60; // Milliseconds => minutes
}

如果t1t2不是Date个实例,则应该是Date个实例。 :-)大概你有火车的预定和实际到达时间的日期和时间。 new Date(year, month, day [, hour, minute, second, millisecond ]) 构造函数允许您提供以下内容:

{{1}}

如果你发现自己需要做很多日期/时间计算(以及解析和显示),我会看DateJS