Datumsdifferenz in Jahren, Monaten und Tagen
Vom 31. Januar 2019 bis zum 2. März 2024 sind es 5 Jahre, 1 Monat und 2 Tage, insgesamt 1.857 Tage. Geben Sie zwei beliebige Daten ein und erhalten Sie dieselbe Aufschlüsselung, mit sauber behandelten Monatsenden. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Von
- 2019-01-31
- To
- 2024-03-02
- Jahre
- 5
- Monate
- 1
- Tage
- 2
- Richtung
- forward
Dieser Rechner zerlegt den Abstand zwischen zwei ausdrücklich angegebenen ISO-Kalenderdaten in ganze Jahre, ganze Monate und verbleibende Tage. Zusätzlich nennt er Richtung und vorzeichenbehaftete Gesamttage. Da Sie beide Daten angeben, hängt das Ergebnis niemals von der aktuellen Uhrzeit ab.
So wird die Aufteilung in Jahre, Monate und Tage berechnet
Der Rechner versteht den Abstand als Kalenderdauer und nicht als dezimale Umrechnung verstrichener Tage. Vom früheren Datum aus ermittelt er die größte Zahl vollständiger Monate, die ohne Überschreiten des späteren Datums addiert werden kann. Diese Zahl wird in Jahre und Monate getrennt; anschließend werden die exakten Tage seit dem Zwischenjubiläum gezählt.
Dreißig Tage sind daher nicht automatisch ein Monat: Der nächste monatliche Stichtag muss erreicht sein. Verwenden Sie dieses Feld für einen Einzelwert und die Aufteilung für eine lesbare Dauer.
Monatsenden, Schaltjahre, umgekehrte Daten und UTC
Nicht jeder Tag kommt in jedem Monat vor, deshalb gelten eindeutige Regeln. Führt ein Monatsschritt in einen kürzeren Monat, wird der Tag auf dessen letzten gültigen Tag begrenzt: Auf den 31. Januar folgt der 28. oder 29.
Februar. Danach prüft der Algorithmus, ob das Ziel überschritten wurde. Schaltjahre folgen der gregorianischen Regel: durch 4 teilbar, außer Jahrhundertjahre ohne Teilbarkeit durch 400. Gleiche Daten ergeben Nullen.
Die Berechnung nutzt Datumsfelder als ganze Zahlen, ohne JavaScript Date, lokale Zeitzone, Sommerzeit, Netzwerk, Uhr oder sprachabhängige Auswertung.
Daten eingeben und das Ergebnis richtig verwenden
Geben Sie from und to als Zeichenfolgen im Format JJJJ-MM-TT mit führenden Nullen an. Unterstützt werden die Jahre 0001 bis 9999. Typische Anwendungen sind Zugehörigkeitsdauer, Projektlaufzeiten, historische Vergleiche und reproduzierbare Vertragsregeln.
Soll ein Alter zu einem festen Tag bestimmt werden, geben Sie dieses Referenzdatum ausdrücklich an und speichern Sie es; das Werkzeug setzt niemals den heutigen Tag ein.
Anwendungsfälle
Eine Projektlaufzeit beschreiben
Wandeln Sie zwei gespeicherte Meilensteine in eine lesbare Kalenderdauer um und behalten Sie die genaue signierte Tageszahl.
Zugehörigkeit zu einem festen Datum berechnen
Messen Sie Mitgliedschaft, Beschäftigung oder Kontolaufzeit gegen ein gespeichertes Referenzdatum statt gegen heute.
Reproduzierbare Datumstests erstellen
Prüfen Sie Monatsenden und Schaltjahre mit Ergebnissen, die weder Zeitzone noch Ausführungszeit verändern.
Häufige Fragen
Verwendet dieser Rechner das heutige Datum?
Nein. Beide ISO-Daten sind erforderlich, und die Berechnung liest niemals die aktuelle Uhr.
Wie werden Monatsenden behandelt?
Ein Monatsschritt wird auf den letzten gültigen Tag eines kürzeren Monats begrenzt und danach auf Überschreitung geprüft.
Welches Datumsformat wird akzeptiert?
Verwenden Sie streng JJJJ-MM-TT, gültige gregorianische Daten und Jahre zwischen 0001 und 9999.
Beeinflussen Zeitzone oder Sommerzeit das Ergebnis?
Nein. Das Werkzeug verwendet ganzzahlige Datumsarithmetik ohne JavaScript Date, lokale Zeitzone oder Sommerzeitregeln.
Was passiert, wenn das zweite Datum vor dem ersten liegt?
Sie erhalten dieselben Jahre, Monate und Tage, gemessen vom früheren zum späteren Datum. Die Richtung lautet dann rückwärts und die Gesamtzahl der Tage wird negativ, sodass Ihre Reihenfolge erhalten bleibt.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/date/diff-breakdown-ymd \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"from":"2019-01-31","to":"2024-03-02"}'const res = await fetch("https://api.kit.forhosting.com/date/diff-breakdown-ymd", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"from": "2019-01-31",
"to": "2024-03-02"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/diff-breakdown-ymd",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"from": "2019-01-31",
"to": "2024-03-02"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/diff-breakdown-ymd", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"from":"2019-01-31","to":"2024-03-02"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"from":"2019-01-31","to":"2024-03-02"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/diff-breakdown-ymd", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"from": "2019-01-31",
"to": "2024-03-02"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.diff_breakdown_ymd",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Strenge JJJJ-MM-TT-Prüfung, der proleptische gregorianische Kalender und zeitzonenfreie Arithmetik machen dieselbe Anfrage im Browser, in der API und in automatisierten Tests reproduzierbar.
So wird die Aufteilung in Jahre, Monate und Tage berechnet
So behalten Jahre und Monate trotz unterschiedlicher Länge ihre übliche Bedeutung. total_days liefert getrennt die vorzeichenbehaftete ordinale Differenz. Bei vertauschten Daten bleiben die Komponenten nichtnegativ, während direction und total_days die Eingabereihenfolge bewahren.
Monatsenden, Schaltjahre, umgekehrte Daten und UTC
Liegt das zweite Datum früher, bleibt der Betrag der Aufteilung gleich, direction zeigt rückwärts und total_days wird negativ.
Daten eingeben und das Ergebnis richtig verwenden
Unmögliche Daten, fehlende Felder, Zeitstempel, regionale Formate und natürliche Sprache werden abgelehnt statt erraten. years, months und days bilden gemeinsam eine fortlaufende Dauer ab dem chronologisch früheren Datum; rechnen Sie Monate nicht einzeln in eine feste Tageszahl um. total_days eignet sich für Sortierung, Fristen und skalare Speicherung, direction kennzeichnet vorwärts, rückwärts oder gleich. Eine API-Anfrage kostet $0.002.
Technische Fragen
Sind Daten in umgekehrter Reihenfolge zulässig?
Ja. Die Aufteilung bleibt nichtnegativ, direction zeigt rückwärts und total_days wird negativ.