在表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
答案 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。