如何使用datejs计算大于24小时的小时数

时间:2012-11-27 14:56:26

标签: javascript time datejs

在表I中我有字段类型TIME,我在那里存储时间间隔,例如92:30:00,我想用javascript(datejs)做的是添加或删除例如02:15:00到/从92:30:00

当小时数不超过23:59时,我能够做到这一点但是当价值超过23:59时如何做呢?

grab a from db //as 92:30
var b = Date.parse(a);
var c = Date.parse("02:15");

    d= new TimeSpan(b-c);
    e= (b).addHours(c);

console.log(d.toString("HH:mm")
console.log(e.toString("HH:mm")

因为我很伤心它有效如果你留在24小时的时间范围内,是否可以以更长的小时间隔做同样的事情?

更新: (总结一下)

t = Date.today();
cc = Date.parse(c);
dd = Date.parse(d);

ccc = (cc - t)
ddd = (dd - t);

res = new TimeSpan(ccc+ddd);
console.log(res.toString()); //3.22:45:00

2 个答案:

答案 0 :(得分:1)

尝试并不是很糟糕,但是你忘记了 ZERO 日期实际上是1970年1月1日(我认为)。所以,你需要记住日期算术。

答案 1 :(得分:1)

我认为Datejs不会正确解析> 24小时的时间值。我能想到的最简单的解决方法就是将字符串拆分为部分并添加到Date.today()

以下是演示整个场景的示例。

示例

var a = '92:30'.split(':');
var b = '02:15'.split(':');

var c = Date.today().addHours(+a[0]).addMinutes(+a[1]);
var d = Date.today().addHours(+b[0]).addMinutes(+b[1]);

var e = new TimeSpan(c - d);

console.log('days', e.days);  // 3
console.log('hours', e.hours);  // 18
console.log('minutes', e.minutes);  // 15

我不是100%你想要的最终结果,但是一旦你拥有e TimeSpan,你就可以减去两个原始值。

希望这会有所帮助。

编辑:如果您只想对值进行简单的数学运算来计算小时值,则以下内容应该有效。

示例

var a = '92:30'.split(':');
var b = '02:15'.split(':');

var c = Date.today().addHours(+a[0]).addMinutes(+a[1]);
var d = Date.today().addHours(+b[0]).addMinutes(+b[1]);

var diff = (c - d) / (1000 * 60 * 60);

console.log(diff); // 90.25

您不应该要求Datejs这样做。只需使用本机JavaScript Date API就可以了,您可以从上面的示例中删除任何Datejs API。