Przejdź do głównej treści
LibraTool logoLibraTool

Kalkulator różnicy dat za darmo

Oblicz dokładną różnicę między dwiema datami — lata, miesiące, dni, tygodnie, dni robocze (z wyłączeniem weekendów), godziny i minuty.

Działa offline po wczytaniu

Szybkie szablony

Wybierz obie daty, aby zobaczyć różnicę.

Typowe zastosowania

  • Oblicz Dni do Spodziewanego Terminu PoroduOdliczanie do spodziewanego terminu porodu dziecka: dowiedz się dokładnie ile tygodni, dni i godzin pozostało do wielkiego dnia.
  • Dni Do Twojego UrlopuOdliczanie do podróży z dniami roboczymi, całkowitymi dniami i pozostałymi tygodniami do celów planowania.
  • Dni Robocze Do Terminu ProjektuOblicz dokładną liczbę dni roboczych (z wyłączeniem weekendów) między dzisiaj a terminem projektu.
  • Oblicz Dni Rocznicy RazemDowiedz się dokładnie jak wiele dni, miesięcy i lat byliście razem ze kimś specjalnym.
  • Kalkulator Różnicy Wieku Między Dwoma OsobamiOblicz dokładną różnicę wieku między dwoma datami urodzin: lata, miesiące i dni oddzielone.

Jak to działa

Wszystkie obliczenia działają w całości w przeglądarce, z ręcznie napisaną arytmetyką UTC — bez zewnętrznej biblioteki i żądań do serwera. Narzędzie parsuje ciągi RRRR-MM-DD na składniki kalendarzowe, oblicza różnice za pomocą znaczników czasu Date.UTC() w milisekundach, aby uniknąć przesunięć związanych z czasem letnim, i przechodzi dzień po dniu, aby zliczyć dni robocze od poniedziałku do piątku.

  1. 1
    Bezpieczne parsowanie dat
    Każdy ciąg daty jest sprawdzany wyrażeniem regularnym, a następnie odtwarzany przez Date.UTC() — nie new Date(string) — aby użytkownicy na zachód od UTC nigdy nie zobaczyli przesunięcia dnia tygodnia wynikającego z interpretacji samej daty w lokalnej strefie czasowej przeglądarki.
  2. 2
    Odejmowanie milisekund UTC
    Obie daty są przeliczane na znaczniki czasu północy UTC przez Date.UTC(y, m, d). Dzielenie całkowite przez 86 400 000 ms daje dokładną liczbę pełnych dni, odporną na zmiany czasu, które w przeciwnym razie mogłyby sprawić, że dzień trwałby 23 lub 25 godzin.
  3. 3
    Podział kalendarzowy i liczba dni roboczych
    Ręcznie napisany rozkład na lata/miesiące/dni obsługuje nieregularne długości miesięcy (pożyczając dni z poprzedniego miesiąca, gdy trzeba). Osobna pętla przechodzi przez każdy dzień UTC między datami i zwiększa licznik tylko dla dni od poniedziałku do piątku (getUTCDay() !== 0 lub 6), co daje dokładną liczbę dni roboczych niezależnie od ustawień regionalnych.
  4. 4
    Wyniki we wszystkich jednostkach
    Sumy są formatowane przez toLocaleString() z ustawieniami regionalnymi strony (grupowanie cyfr zgodne z językiem), a następnie wyświetlane jednocześnie jako lata/miesiące/dni, łączna liczba dni, dni robocze, tygodnie, godziny i minuty. Bieżąca para dat jest zapisywana w adresie URL przez history.replaceState, więc każdy wynik można zapisać w zakładkach lub udostępnić jako bezpośredni link.

Powiązane narzędzia

Często zadawane pytania