2

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

2 回答 2

1

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

于 2012-11-27T14:59:08.250 回答
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% 你想要的最终结果,但是一旦你有了eTimeSpan,你就有了减去两个原始值的乘积。

希望这可以帮助。

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

例子

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。

于 2012-11-27T20:51:25.517 回答