Datumsdifferenz und Altersrechner
Viele suchen die Anzahl der Tage zwischen zwei Daten und ein verlässliches Alter in Jahren, Monaten und Tagen.
Im Browser ausführen – kostenlos
Dieses Werkzeug beantwortet beides nur mit bürgerlichen Kalenderregeln: ohne Zeitzonen, ohne Werktage und ohne versteckte Rundung. Sie erhalten Gesamttage, eine vorzeichenbehaftete Aufschlüsselung in Jahre, Monate und Tage sowie das geordnete Paar der Berechnung.
Nur Kalenderdaten — ohne Uhr und ohne Zeitzone
Jede Eingabe ist ein Kalendertag im Format JJJJ-MM-TT. Die Berechnung konsultiert weder Stunden noch Sommerzeit noch die Serveruhr für die Differenz selbst. So bleibt dasselbe Datenpaar im kostenlosen Browserwerkzeug und in der API stabil. Ungültige Tage wie 2023-02-29 oder 2024-04-31 werden abgelehnt statt stillschweigend angepasst, damit ein Tippfehler nicht zum falschen Jahrestag wird.
Jahre, Monate und Tage mit einer konsistenten Monatsendregel
Die Aufschlüsselung nutzt Kalendermonate mit Begrenzung auf den letzten gültigen Tag: Ein Monat zu 2024-01-31 ergibt 2024-02-29, nicht einen erfundenen Märztag. Wenn ein vorläufiger Monat das Enddatum überschreiten würde, geht der Algorithmus einen Monat zurück und zählt die verbleibenden ganzen Tage. Deshalb sind vom 2024-01-31 bis 2024-02-29 ein Monat und null Tage, und vom 2024-01-31 bis 2024-02-28 null Monate und achtundzwanzig Tage. Gesamttage schließen den Starttag aus: dasselbe Datum ergibt null.
Differenzmodus und Altersmodus teilen dasselbe Orakel
Der Differenzmodus vergleicht date_from mit date_to und liefert total_days, years, months, days, sign und das geordnete Paar. Der Altersmodus nutzt birthdate und ein explizites reference_date für deterministische Ergebnisse; fehlt die Referenz im kostenlosen Werkzeug, gilt das lokale Kalenderdatum des Geräts. Numerisch ist das Alter dieselbe Funktion wie die Differenz mit anderen Feldnamen, sodass ein Alter mit fester Referenz nicht von der Differenz desselben Paares abweichen kann.
Vorzeichenbehaftete Ergebnisse bei umgekehrter Reihenfolge
Liegt das Enddatum vor dem Startdatum, tauscht das Werkzeug die Eingaben nicht stillschweigend. Es behält die übermittelte Reihenfolge in den Echofeldern und setzt ein negatives Vorzeichen auf Gesamttage und Aufschlüsselung. Diese Symmetrie deckt zukünftige Geburtstage, umgekehrte Intervalle und automatische Prüfungen ab, die ein verkehrtes Intervall ohne zweiten Codepfad erkennen müssen.
Anwendungsfälle
Tage zwischen Projektmeilensteinen
Messen Sie exklusive Kalendertage zwischen Start und Frist, ohne Wochenenden, Feiertage oder Zeitzonen einzumischen.
Bürgerliches Alter für Formulare und Berechtigung
Berechnen Sie Jahre, Monate und Tage gegen ein festes Bezugsdatum, damit Prüfungen und Exporte reproduzierbar bleiben.
Jahrestage und Schalttagsgrenzen
Behandeln Sie Geburtstage am 29. Februar und Monatsendpaare mit derselben Clamp-Regel wie gewöhnliche Monate.
Automatische Intervallprüfungen
Rufen Sie die API in einer Pipeline auf und speichern Sie total_days zusammen mit der vorzeichenbehafteten Aufschlüsselung im Audit-Protokoll.
Häufige Fragen
Ist die Tageszählung inklusiv oder exklusiv?
Exklusiv zum Starttag. Dasselbe Datum ergibt null Gesamttage; der nächste Kalendertag ergibt eins.
Wie wird das Monatsende behandelt?
Monate werden mit Begrenzung auf den letzten gültigen Tag des Zielmonats addiert und korrigiert, wenn das Zwischendatum das Enddatum überschreitet. Verbleibende ganze Tage vervollständigen die Aufschlüsselung.
Was gilt für den 29. Februar in einem Nicht-Schaltjahr?
Der Jahrestag von 2024-02-29 bis 2025-02-28 ist ein Jahr, null Monate und null Tage nach der Clamp-Regel. Ungültige Eingaben wie 2023-02-29 werden abgelehnt.
Worin unterscheidet sich das von Arbeitstagen?
Diese Fähigkeit zählt die natürliche Kalenderdifferenz und das bürgerliche Alter. Arbeitstage und Feiertage gehören zu einem anderen Werkzeug und gelten hier nicht.
Kann das Ergebnis negativ sein?
Ja. Liegt das Enddatum vor dem Startdatum, tragen total_days und die Felder Jahre-Monate-Tage ein negatives Vorzeichen, ohne die übermittelten Werte zu tauschen.
Ist der Rechner auf Desktop und Mobilgerät kostenlos?
Die Seite läuft lokal und kostenlos in Desktop- und Mobilbrowsern. Die native App ruft die API auf und zeigt den Tarif; dieselbe Anfrage kostet $0.002 mit vorausbezahltem KIT-Guthaben.
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/dev/date-diff \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"date_from":"2024-01-31","date_to":"2024-02-29"}'const res = await fetch("https://api.kit.forhosting.com/dev/date-diff", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"date_from": "2024-01-31",
"date_to": "2024-02-29"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/date-diff",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"date_from": "2024-01-31",
"date_to": "2024-02-29"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/date-diff", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"date_from":"2024-01-31","date_to":"2024-02-29"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"date_from":"2024-01-31","date_to":"2024-02-29"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/date-diff", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"date_from": "2024-01-31",
"date_to": "2024-02-29"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.date_diff",
"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.
Limits
year_min | 1 |
year_max | 9999 |
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. |