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



在表中,我有字段类型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

我认为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的时间跨度,您就有了减去两个原始值的乘积。

希望这有帮助。

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

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。

不错的尝试,但你忘记了日期实际上是 1 年 1970 月 1 日(我认为)。因此,您需要牢记这一点进行日期算术。

最新更新