Próbuję znaleźć różnicę między dwiema datami w ciągu kilku sekund. Logika byłaby następująca:
- ustal początkową datę, która będzie teraz;
- ustal ostateczną datę, która będzie datą początkową plus kilka sekund w przyszłości (powiedzmy na przykład 15)
- uzyskać różnicę między tymi dwoma (liczba sekund)
Powodem, dla którego robię to z datami, jest to, że ostateczna data / czas zależy od innych zmiennych i nigdy nie jest taka sama (zależy to od tego, jak szybko użytkownik coś robi), a także przechowuję datę początkową dla innych rzeczy.
Próbowałem czegoś takiego:
var _initial = new Date(),
_initial = _initial.setDate(_initial.getDate()),
_final = new Date(_initial);
_final = _final.setDate(_final.getDate() + 15 / 1000 * 60);
var dif = Math.round((_final - _initial) / (1000 * 60));
Rzecz w tym, że nigdy nie dostaję właściwej różnicy. Próbowałem podzielić, przez 24 * 60
które zostawiłoby mi sekundy, ale nigdy nie udawało mi się. Więc co jest nie tak z moją logiką? Mogę popełnić jakiś głupi błąd, bo jest już dość późno, ale przeszkadza mi, że nie mogę zmusić go do pracy :)
javascript
date
Roland
źródło
źródło
Odpowiedzi:
Kod
Lub nawet prostsze,
(endDate - startDate) / 1000
jak wskazano w komentarzach, chyba że używasz maszynopisu.Wyjaśnienie
Musisz wywołać
getTime()
metodę dlaDate
obiektów, a następnie po prostu odjąć je i podzielić przez 1000 (ponieważ pierwotnie jest to w milisekundach). Dodatkowo, kiedy wywołujeszgetDate()
metodę, w rzeczywistości otrzymujesz dzień miesiąca jako liczbę całkowitą od 1 do 31 (nie licząc od zera), w przeciwieństwie do czasu epoki, który otrzymasz od wywołaniagetTime()
metody, reprezentująca liczbę milisekund od 1 stycznia 1970, 00:00Tyrada
W zależności od tego, jakie są Twoje operacje związane z datą, możesz zainwestować w integrację biblioteki, takiej jak date.js lub moment.js, która znacznie ułatwia pracę programistom, ale to tylko kwestia osobistych preferencji.
Na przykład w moment.js zrobilibyśmy,
moment1.diff(moment2, "seconds")
co jest piękne.Przydatne dokumenty dotyczące tej odpowiedzi
źródło
.valueOf()
, co-
w każdym razie nazwałby operator ...Możesz użyć
new Date().getTime()
do uzyskania sygnatur czasowych. Następnie można obliczyć różnicę między końcem i zacząć wreszcie przekształcić znacznik czasu, który jestms
pods
.źródło
źródło
Poniższy kod poda różnicę czasu w sekundach.
źródło
spróbuj użyć dedykowanych funkcji z języków programowania wysokiego poziomu. JavaScript
.getSeconds();
pasuje tutaj:źródło
różnica czasu między teraz a 10 minutami później przy użyciu momentjs
źródło