Mam dwa znaczniki czasu w formacie HH:mm i muszę obliczyć różnicę między nimi reprezentujące przedział czasu w tym samym formacie HH:mm.

Czy jest jakieś narzędzie w JavaScript, aby to osiągnąć? Próbowałem użyć obiektu Date, ale nie mogę znaleźć czegoś przydatnego ... czy możesz mi pomóc?

8
davioooh 30 sierpień 2012, 12:59

3 odpowiedzi

Najlepsza odpowiedź

Możesz po prostu odjąć dwa daty od siebie, wynik będzie różnicą w milisekundach.

Z Mozilla Deweloper Network:

// using static methods
var start = Date.now();
// the event you'd like to time goes here:
doSomethingForALongTime();
var end = Date.now();
var elapsed = end - start; // time in milliseconds

Od daty ma konstruktor, który akceptuje milisekundy jako argument, możesz ponownie przekształcić to na randkę, robiąc to

var difference = new Date(elapsed);
//If you really want the hours/minutes, 
//Date has functions for that too:
var diff_hours = difference.getHours();
var diff_mins = difference.getMinutes();
22
Konerak 30 sierpień 2012, 09:01

Coś takiego:

​var t1 = '12:04'.split(':'), t2 = '3:45'​​​​​​​.split(':');
var d1 = new​ Date(0, 0, 0, t1[0], t1[1]),
    d2 = new Date(0, 0, 0, t2[0], t2[1]);
var diff = new Date(d1 - d2);
7
timidboy 14 styczeń 2020, 02:13

Zakładając, że Tim1 jest ciągiem jak "09:15" i Tim2 jest sznurkiem jak "19:05", a następnie różnica między Tim2 a Tim1 może zostać uzyskana z następującym kodem JavaScript: -

var tim1='09:15',tim2='19:05';
var ary1=tim1.split(':'),ary2=tim2.split(':');
var minsdiff=parseInt(ary2[0],10)*60+parseInt(ary2[1],10)-parseInt(ary1[0],10)*60-parseInt(ary1[1],10);
alert(String(100+Math.floor(minsdiff/60)).substr(1)+':'+String(100+minsdiff%60).substr(1));
1
Graphic Equaliser 30 sierpień 2012, 09:23