ToolDeck

Kalkulator dat

Oblicz różnicę między dwiema datami w latach, miesiącach, dniach i więcej

Czym jest obliczanie różnicy dat?

Obliczanie różnicy dat to proces wyznaczania różnicy między dwiema datami kalendarzowymi lub dodawania bądź odejmowania okresu czasu od podanej daty. Kalkulator dat online pozwala określić dokładną liczbę dni, tygodni, miesięcy i lat między dowolnymi dwiema datami bez ręcznego liczenia. Stosuje się go w planowaniu projektów, prawie umów, rachunkowości finansowej i tworzeniu oprogramowania.

Złożoność obliczania dat wynika z nieregularnej struktury kalendarza gregoriańskiego. Miesiące mają 28, 29, 30 lub 31 dni. Lata mają 365 lub 366 dni w zależności od zasad dotyczących lat przestępnych. Proste odejmowanie numerów dni daje błędne wyniki, gdy daty obejmują różne miesiące lub lata. Właściwe algorytmy obliczania różnicy dat muszą uwzględniać te nieregularności, przechodząc przez każdą jednostkę kalendarzową osobno.

Arytmetyka dat pojawia się w wielu kontekstach programistycznych: obliczaniu czasu wygaśnięcia tokenów, planowaniu powtarzających się zdarzeń, wyznaczaniu terminów SLA lub mierzeniu czasu, który upłynął między wpisami dziennika. W przepływach pracy DevOps dotyczy okien ważności certyfikatów, czasu trwania blokad wdrożeń i długości rotacji dyżurów. Choć większość języków udostępnia biblioteki dat, kalkulator działający w przeglądarce daje natychmiastowe odpowiedzi na szybkie sprawdzenia bez pisania kodu, instalowania zależności ani otwierania REPL-a.

Dlaczego warto używać tego kalkulatora dat?

Uzyskaj natychmiastowe zestawienie czasu między dowolnymi dwiema datami, z wynikami w wielu jednostkach naraz. Bez formuł, bez kodu, bez rejestracji.

Natychmiastowe wyniki
Wybierz dwie daty i sprawdź różnicę w latach, miesiącach, tygodniach, dniach, godzinach i minutach. Wyniki aktualizują się przy zmianie dowolnej daty.
🔒
Prywatność przede wszystkim
Wszystkie obliczenia są wykonywane w przeglądarce. Żadne daty nie są przesyłane do serwera, nic nie jest przechowywane ani rejestrowane.
📅
Wiele jednostek wyjściowych
Wynik jest wyświetlany jednocześnie we wszystkich jednostkach: łączna liczba dni, tygodnie, miesiące oraz pełne rozbicie na lata, miesiące i dni. Nie trzeba samodzielnie przeliczać między jednostkami.
🔢
Bez konta
Narzędzie jest gotowe do użycia od razu. Nie wymaga logowania, subskrypcji ani nie ma limitu użycia. Dodaj do zakładek i korzystaj, kiedy potrzebujesz szybko sprawdzić datę.

Zastosowania kalkulatora dat

Programowanie front-end
Sprawdź, ile dni pozostało do daty premiery funkcji, zweryfikuj logikę licznika odliczającego czas lub przetestuj komponenty wyboru daty pod kątem oczekiwanych przedziałów.
Inżynieria back-end
Sprawdź okna wygaśnięcia tokenów, oblicz czasy TTL pamięci podręcznej lub zweryfikuj, czy interwały zaplanowanych zadań generują poprawne daty następnego uruchomienia.
DevOps i SRE
Zmierz odstęp między znacznikami czasu incydentów w analizach post-mortem, oblicz czasy wyprzedzenia dla wygaśnięcia certyfikatów lub określ czas trwania blokad wdrożeń w okresach świątecznych.
QA i testowanie
Generuj dane testowe z określonymi przesunięciami dat, weryfikuj logikę ograniczeń wiekowych obliczając dokładny wiek z daty urodzenia lub potwierdzaj poprawną obsługę warunków brzegowych dat.
Zarządzanie projektami
Oblicz długość sprintów, zmierz liczbę dni roboczych między kamieniami milowymi lub oszacuj harmonogramy dostaw, licząc dni kalendarzowe od daty startowej.
Nauka i edukacja
Policz dni do egzaminu, oblicz długość semestru lub sprawdź odpowiedzi do zadań domowych z arytmetyki dat na kursach informatyki.

Tabela jednostek czasu

Obliczenia różnicy dat obejmują jednostki o zmiennej długości. Miesiące i lata nie mają stałego czasu trwania, dlatego proste dzielenie łącznej liczby dni może dawać niedokładne wyniki. Poniższa tabela przedstawia każdą jednostkę i jej zakres:

JednostkaOdpowiednikUwaga
1 year365 or 366 daysDepends on leap year
1 month28–31 daysVaries by month
1 week7 daysFixed
1 day24 hoursFixed (ignoring DST transitions)
1 hour3,600 secondsFixed
1 minute60 secondsFixed

Popularne formaty dat

Podczas programistycznej pracy z datami format decyduje o sposobie parsowania ciągu daty. Użycie złego formatu powoduje trudne do wykrycia błędy. ISO 8601 to najbezpieczniejszy wybór do wymiany danych, ponieważ jest jednoznaczny i uwzględnia strefy czasowe. Poniższa tabela przedstawia formaty, z którymi najczęściej się spotykasz:

FormatPrzykładStosowany w
ISO 86012026-04-10T14:30:00ZAPIs, databases, logs
RFC 2822Fri, 10 Apr 2026 14:30:00 +0000Email headers, HTTP
Unix timestamp1775831400Epoch-based systems
US format04/10/2026User-facing (US locale)
European format10.04.2026User-facing (EU locale)
Short ISO2026-04-10HTML date inputs, SQL DATE

Przykłady kodu: obliczanie liczby dni między datami

Działające przykłady obliczania różnicy między dwiema datami w JavaScript, Python, Go i wierszu poleceń. Każdy fragment kodu pokazuje zarówno obliczenie łącznej liczby dni, jak i rozbicie na jednostki kalendarzowe tam, gdzie język to obsługuje.

JavaScript
// Calculate days between two dates
const start = new Date('2026-01-15')
const end = new Date('2026-04-10')
const diffMs = end.getTime() - start.getTime()
const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24))
console.log(diffDays) // → 85

// Get year, month, day breakdown
function dateDiff(a, b) {
  let years = b.getFullYear() - a.getFullYear()
  let months = b.getMonth() - a.getMonth()
  let days = b.getDate() - a.getDate()
  if (days < 0) {
    months--
    days += new Date(b.getFullYear(), b.getMonth(), 0).getDate()
  }
  if (months < 0) { years--; months += 12 }
  return { years, months, days }
}
console.log(dateDiff(start, end)) // → { years: 0, months: 2, days: 26 }
Python
from datetime import date, timedelta
from dateutil.relativedelta import relativedelta

start = date(2026, 1, 15)
end = date(2026, 4, 10)

# Total days
diff = (end - start).days
print(diff)  # → 85

# Year/month/day breakdown (requires python-dateutil)
rd = relativedelta(end, start)
print(f"{rd.years}y {rd.months}m {rd.days}d")  # → 0y 2m 26d

# Add 90 days to a date
future = start + timedelta(days=90)
print(future)  # → 2026-04-15
Go
package main

import (
	"fmt"
	"time"
)

func main() {
	start := time.Date(2026, 1, 15, 0, 0, 0, 0, time.UTC)
	end := time.Date(2026, 4, 10, 0, 0, 0, 0, time.UTC)

	// Total duration
	diff := end.Sub(start)
	days := int(diff.Hours() / 24)
	fmt.Println(days) // → 85

	// Add 90 days
	future := start.AddDate(0, 0, 90)
	fmt.Println(future.Format("2006-01-02")) // → 2026-04-15
}
CLI (GNU date / macOS)
# Days between two dates (GNU coreutils)
echo $(( ($(date -d "2026-04-10" +%s) - $(date -d "2026-01-15" +%s)) / 86400 ))
# → 85

# Add 90 days to a date (GNU date)
date -d "2026-01-15 + 90 days" +%Y-%m-%d
# → 2026-04-15

# macOS (BSD date) — add 90 days
date -j -v+90d -f "%Y-%m-%d" "2026-01-15" +%Y-%m-%d
# → 2026-04-15

Często zadawane pytania

Jak obliczyć liczbę dni między dwiema datami?
Odejmij wcześniejszą datę od późniejszej, aby uzyskać różnicę w milisekundach (lub natywnym typie czasu trwania danego języka), a następnie podziel przez liczbę milisekund w dobie (86 400 000). To daje łączną liczbę dni, które minęły. Aby uzyskać rozbicie na lata, miesiące i pozostałe dni, należy przechodzić przez każdą jednostkę osobno, ponieważ miesiące mają zmienną długość.
Czy różnica dat obejmuje datę startową czy końcową?
Zgodnie z konwencją różnica dat zlicza dni między obiema datami, wykluczając datę startową lub końcową. Jeśli wybierzesz 1 i 2 stycznia, wynik wyniesie 1 dzień. Jeśli Twój przypadek wymaga zliczania włącznego (z obydwoma krańcami), dodaj 1 do wyniku. To narzędzie stosuje konwencję wyłączenia końca, używaną przez większość języków programowania.
Jak lata przestępne są obsługiwane w obliczeniach dat?
Rok przestępny dodaje 29 lutego, co sprawia, że rok ma 366 dni zamiast 365. Reguła lat przestępnych kalendarza gregoriańskiego brzmi: podzielne przez 4, z wyjątkiem wieków, które muszą być również podzielne przez 400. Zatem 2024 i 2028 są latami przestępnymi, 1900 nim nie był, a 2000 był. Algorytmy obliczania różnicy dat operujące na jednostkach kalendarzowych (rok/miesiąc/dzień) obsługują to automatycznie. Algorytmy przeliczające na łączną liczbę dni muszą uwzględnić dodatkowy dzień, gdy zakres obejmuje 29 lutego.
Jaka jest różnica między dniami kalendarzowymi a roboczymi?
Dni kalendarzowe liczą każdy dzień, włącznie z weekendami i świętami. Dni robocze wykluczają soboty, niedziele i dni ustawowo wolne od pracy. To narzędzie oblicza dni kalendarzowe. Aby przeliczyć na przybliżoną liczbę dni roboczych, pomnóż łączną liczbę dni kalendarzowych przez 5/7. Dla dokładnej liczby dni roboczych potrzebny jest również kalendarz świąt dla danej jurysdykcji.
Czy mogę obliczyć datę przyszłą, dodając dni do daty startowej?
Tak. W JavaScript utwórz obiekt Date i wywołaj setDate(getDate() + n). W Pythonie dodaj timedelta(days=n) do obiektu daty. W Go użyj time.AddDate(0, 0, n). To narzędzie skupia się na różnicy między dwiema znanymi datami, ale możesz go użyć do weryfikacji obliczeń: wpisz datę startową i oczekiwaną datę wynikową, a następnie sprawdź, czy wynik w łącznej liczbie dni odpowiada dodanemu przesunięciu.
Dlaczego różne narzędzia podają różne wyniki dla liczby miesięcy między datami?
Obliczanie miesięcy jest niejednoznaczne, ponieważ miesiące mają różne długości. Rozważ przypadek od 31 stycznia do 28 lutego: czy to 1 miesiąc, czy 0 miesięcy i 28 dni? Różne biblioteki podejmują różne decyzje. Najpopularniejsza konwencja (stosowana przez dateutil w Pythonie, Period w Javie i to narzędzie) uznaje pełny miesiąc za osiągnięcie tego samego dnia miesiąca lub ostatniego prawidłowego dnia krótszego miesiąca. Zawsze sprawdzaj, której konwencji używa Twoja biblioteka, porównując wyniki.
Czy obliczanie dat jest zależne od stref czasowych?
Gdy wybierasz daty bez składnika czasu (tylko rok-miesiąc-dzień), obliczenie jest niezależne od stref czasowych, ponieważ operuje na datach kalendarzowych, a nie na konkretnych momentach w czasie. Jeśli musisz obliczyć różnicę między dwoma konkretnymi momentami (z uwzględnieniem czasu i strefy czasowej), powinieneś pracować z pełnymi znacznikami czasu ISO 8601 i przed odejmowaniem przekonwertować oba na UTC. To narzędzie operuje wyłącznie na datach kalendarzowych.