2

表には、時間間隔(92:30:00など)を格納しているフィールドタイプTIMEがあり、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を入手すると、2つの元の値を差し引いた結果が得られます。

お役に立てれば。

編集:時間の値を計算するために値を簡単に計算したいだけの場合は、次のように機能するはずです。

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を要求するべきではありません。ネイティブのJavaScriptDateAPIを使用するだけで、上記のサンプルからDatejsAPIを削除できます。

于 2012-11-27T20:51:25.517 に答える