Datumsdifferenz-Rechner
Berechne Tage, Wochen, Monate, Jahre zwischen zwei Daten
Berechne das Intervall zwischen zwei Daten
Was ist ein Datumsdifferenz-Rechner?
Ein Datumsdifferenz-Rechner misst den Abstand zwischen zwei Kalenderdaten und zeigt ihn als Tage, Wochen, ungefähre Monate, ungefähre Jahre sowie kleinere Einheiten wie Stunden oder Minuten an. Er ist hilfreich für Projektdauern, Urlaubszeiträume, Abrechnungsperioden, Jahrestage, Aufbewahrungsfristen und einfache historische Abstände. Das Ergebnis ist eine Datumsdifferenz und nicht automatisch eine inklusive Zählung beider Endpunkte: Vom 1. Januar bis zum 3. Januar beträgt der Abstand normalerweise zwei Tage, sofern keine Fachregel beide Tage mitzählt. Monate und Jahre sind häufig Näherungen, weil Monate unterschiedlich lang sind. Für Arbeitstage, Feiertage, Zeitzonen oder rechtliche Fristen sollten eigene Regeln verwendet werden.
So verwenden Sie es
So verwenden Sie es
- Geben Sie das Startdatum ein
- Geben Sie das Enddatum ein
- Klicken Sie auf 'Intervall berechnen', um die beiden Daten zu vergleichen
- Ergebnisse anzeigen: Tage, Wochen, Monate, Jahre, Stunden, Minuten, Sekunden
Zählregeln
- Prüfen Sie, ob Ihre Aufgabe ein exklusives Intervall oder eine inklusive Zählung erfordert. Viele Geschäftsregeln zählen Start- und Enddatum mit.
- Bei zeitzonenübergreifender Arbeit konvertieren Sie Daten zuerst in die gleiche Zeitzone, insbesondere wenn Stunden oder Minuten relevant sind.
Anwendungsfälle
Technisches Prinzip
Die exakte Tagesdifferenz wird als Math.floor((end.getTime() - start.getTime()) / 86_400_000) berechnet, wobei 86.400.000 die Anzahl der Millisekunden in einem nicht-Zeitzonenwechsel-behafteten 24-Stunden-Tag ist. Dies ergibt ein exklusives Intervall – vom 1. Januar bis zum 3. Januar sind es 2 Tage, nicht 3 – da die Subtraktion den Zeitraum zwischen zwei Zeitpunkten misst und nicht Kalenderfelder zählt. Für inklusives Zählen (beide Endpunkte mitzählen) addiert man 1 zum Ergebnis; viele arbeitsrechtliche, urlaubs- und abrechnungsbezogene Regeln erfordern dies, und der Off-by-one-Fehler ist die häufigste Ursache für Abweichungen zwischen HR- und Finanzberichten. Wochen sind einfach Tage / 7; die Seite zeigt außerdem Stunden = Tage * 24, Minuten = Tage * 1440 und Sekunden = Tage * 86.400 als abgeleitete Gesamtwerte an. Monats- und Jahresdifferenzen sind bewusst als „ungefähr” gekennzeichnet, da Kalendermonate und -jahre unterschiedlich lang sind. Der einfache Ansatz ist Tage / 30,436875 (durchschnittlicher Gregorianischer Monat) und Tage / 365,2425 (durchschnittliches Gregorianisches Jahr über einen 400-Jahres-Zyklus), was für Statusberichte und Dashboards ausreicht, aber für Verträge ungenau ist. Für eine kalendergenaue Berechnung „X volle Monate zwischen” subtrahiert der Algorithmus die Komponenten Jahr × 12 + Monat und dekrementiert um 1, wenn der Endtag früher als der Starttag liegt – so berechnen es die meisten Datumsbibliotheken (date-fns differenceInMonths, dayjs $.diff('month'), Temporal Duration.from). Die Jahresberechnung hat dieselbe Eigenheit: 2024-02-29 bis 2025-02-28 wird je nach Konvention manchmal als 1 Jahr (Begrenzung auf das Monatsende) und manchmal als 0 Jahre 11 Monate 30 Tage gezählt. Schaltjahre folgen der Gregorianischen Regel (durch 4 teilbar, außer Jahrhundertjahre, die nicht durch 400 teilbar sind, also 1900 = Gemeinjahr, 2000 = Schaltjahr, 2024 = Schaltjahr). Ein Zeitraum, der den 29. Februar einschließt, erhält automatisch einen zusätzlichen Tag, da die Tageszählung auf Millisekunden seit Epoche verankert ist und nicht auf Kalenderfeldern. Die Zeitzonenbehandlung ist kritisch, wenn beide Endpunkte unter Tagesauflösung liegen: Die Subtraktion zweier Date-Werte aus lokalen Zeitstrings kann um den lokalen UTC-Offset abweichen, und ein Zeitraum, der einen Zeitzonenwechsel kreuzt, kann 23 oder 25 Stunden statt der nominellen 24 betragen. Das Y2038-Problem (signed 32-Bit-Überlauf von Unix time_t am 2038-01-19T03:14:07Z) betrifft diese Seite nicht, da JavaScript Date eine 64-Bit-Float verwendet, die Daten bis etwa 100 Millionen Tage beiderseits der Epoche darstellen kann, aber nachgelagerte Systeme in 32-Bit-C benötigen weiterhin Aufmerksamkeit.
- Exakte Tage = Math.floor((end - start) / 86_400_000); 86,4 Mio. ms pro nicht-Zeitzonenwechsel-Tag.
- Ergebnis ist standardmäßig exklusiv: 1. Jan. bis 3. Jan. = 2 Tage; +1 für inklusives Zählen (beide Endpunkte).
- Ungefährer Monat verwendet durchschnittlich 30,436875 Tage; Jahr verwendet 365,2425 Tage über den 400-jährigen Gregorianischen Zyklus.
- Kalendergenaue Monatsdifferenz: (J2-J1)*12 + (M2-M1), dann -1, wenn Endtag < Starttag – entspricht date-fns differenceInMonths.
- Schaltjahre: Durch 4 teilbar, außer Jahrhundertjahre müssen durch 400 teilbar sein (1900 nein, 2000 ja, 2024 ja).
- Zeitzonenwechsel erzeugen 23h- und 25h-Kalendertage; eine 24h-Subtraktion entspricht nicht immer einem Kalendertag.
- JavaScript Date ist eine 64-Bit-Float, immun gegen Unix Y2038 (32-Bit-time_t-Überlauf am 2038-01-19 03:14:07 UTC).
Beispiele
Zwei volle Kalenderjahre (2025-01-01 bis 2026-12-31)
Start : 2025-01-01
Ende : 2026-12-31
Tage : 730
Wochen : 104,29
Monate : ~24,00 (ca.)
Jahre : ~2,00 (ca.)
Hinweis : 2028 ist das nächste Schaltjahr im Bereich, der Zeitraum schließt also den 29. Februar 2028 bei Verlängerung ein.Kurzes Intervall (3 Tage)
Start : 2026-06-11
Ende : 2026-06-14
Tage : 3
Stunden : 72
Minuten : 4320
Sekunden : 259200
Inklusiv-Zählung (beide Enden zählen): 4 TageProjektdauer über eine Jahresgrenze hinweg
Start : 2026-01-15 (Kickoff)
Ende : 2026-07-20 (Go-Live)
Tage : 186
Wochen : 26,57
Monate : ~6,16
Use case : Statusberichte, Retrospektive, Gantt-ÜbersichtAltersberechnung in Tagen
Geburtstag : 1995-03-15
Heute : 2026-06-11
Gelebte Tage : 11.411
Jahre (ca.) : 31,24
Monate : ~374,9
Nützlich, wenn eine genaue Tagesanzahl benötigt wird (z. B. Meilensteine)Zeitzonen-Hinweis (Tokio vs. Los Angeles)
Dasselbe Kalenderdatum '2026-07-15' steht für unterschiedliche reale Zeitpunkte:
Tokio (UTC+9) -> 2026-07-15 00:00 = 2026-07-14 15:00 UTC
Los Angeles (UTC-7) -> 2026-07-15 00:00 = 2026-07-15 07:00 UTC
Differenz bei naiver Verwendung: etwa 16 Stunden – genug, um ein 1-Tages-Ergebnis zu kippen.
Lösung: Beide Daten vor dem Subtrahieren in dieselbe Zeitzone umrechnen.FAQ
Wie wird die Differenz zwischen zwei Daten berechnet?
Per Kalenderarithmetik: Das Ergebnis erscheint als Jahre, Monate und Tage sowie als Gesamtsumme in Wochen, Tagen, Stunden, Minuten und Sekunden. Jahre und Monate sind jubiläumsbasiert (der Jahreszähler steigt erst, wenn derselbe Monat/Tag erreicht ist), und Tage entsprechen der Anzahl Kalendertage zwischen den beiden Daten.
Warum ergeben Jahre + Monate + Tage nicht sauber die Gesamttage?
Weil Monate 28–31 Tage haben. '1 Jahr, 2 Monate, 5 Tage' ergibt unterschiedlich viele Gesamttage, je nachdem ob die beteiligten Monate 28, 29, 30 oder 31 Tage haben. Das Feld 'Gesamttage' nutzt rohe Kalenderarithmetik und ist die präziseste Zahl.
Wird der Starttag mitgezählt oder nicht?
Die Seite zählt exklusive des Startdatums – identische Daten zeigen 0 Tage Differenz. Brauchst du eine inklusive Zählung (z. B. für Übernachtungen bei Buchungen), addiere manuell 1 zum Ergebnis.
Werden Wochenenden oder Feiertage ausgeschlossen?
Nein. Diese Seite zählt jeden Kalendertag. Für Werktagsdifferenzen (ohne Wochenenden und optional ohne Feiertage) nutze das Tool 'Workday Calculator'.
Warum sieht die Zeitkomponente nach einer Sommerzeitumstellung schief aus?
Der Stunden- und Minutenanteil nutzt absolute Zeit, daher fügt das Überspannen einer Sommerzeitumstellung dem Tageszeit-Feld eine Stunde hinzu oder zieht sie ab. Die reine Tageszählung bleibt davon unberührt, da sie kalenderbasiert ist.
Was ist der maximale Datumsbereich, den ich vergleichen kann?
JavaScripts Date deckt ±100.000.000 Tage ab der Unix-Epoche ab, also funktioniert jedes Paar historischer oder zukünftiger Daten innerhalb von etwa ±271.000 Jahren. Daten vor 1582 nutzen proleptische gregorianische Arithmetik, die vom damals lokal verwendeten Kalender abweicht.
Läuft die Berechnung lokal?
Ja. Beide Daten und das Ergebnis bleiben in deinem Browser. Es wird nichts hochgeladen oder protokolliert.