Gewohnheitsserien berechnen: aktuell und längste
Dieser Rechner ermittelt aus einer Liste abgeschlossener Tage zwei aussagekräftige Werte: die Serie aufeinanderfolgender Tage, die am jüngsten erfassten Datum endet, und die längste Serie im gesamten Verlauf.
Im Browser ausführen – kostenlos
Die Daten dürfen unsortiert sein, und doppelte Einträge zählen nur einmal. Daher können Sie Exporte aus Apps, Tagebüchern oder Tabellen direkt verwenden. Die Berechnung beruht auf Kalendertagen statt auf verstrichenen Ortsstunden und bleibt dadurch über Zeitzonen und Zeitumstellungen hinweg stabil.
Bereiten Sie einen verlässlichen Verlauf vor
Geben Sie jeden Kalendertag, an dem die Gewohnheit erfüllt wurde, im Format YYYY-MM-DD an. Die Liste muss nicht sortiert sein, da der Rechner die Daten vor der Ermittlung jeder Serie ordnet. Wiederholungen sind ebenfalls unproblematisch: Hat eine App denselben Abschluss zweimal exportiert, trägt dieser Tag nur einmal bei. Ein Abschluss zu einer beliebigen Uhrzeit steht für den gesamten Kalendertag. Uhrzeiten, Zeitstempel und Zeitzonenangaben werden daher bewusst nicht akzeptiert. So bleibt die Bedeutung einer Serie eindeutig, und zwei Einträge am selben Tag werden nicht als zwei Fortschrittstage gewertet. Nehmen Sie den vollständigen Verlauf auf, wenn Sie eine belastbare längste Serie ermitteln möchten, nicht nur den letzten Monat oder den sichtbaren Ausschnitt einer Übersicht. Die Liste muss mindestens ein Datum enthalten, und jeder Eintrag muss ein echtes Kalenderdatum bezeichnen. Angaben wie der 30. Februar, unvollständige Daten oder anders formatierter Text werden abgelehnt und nicht stillschweigend berichtigt. Diese strenge Prüfung deckt fehlerhafte Exporte auf, bevor daraus ein irreführender Rekord entsteht.
Verstehen Sie aktuelle und längste Serie
Die aktuelle Serie umfasst die aufeinanderfolgenden Tage bis zum jüngsten von Ihnen angegebenen Abschlussdatum. Für diese Definition wird das heutige Datum nicht abgefragt. Derselbe Input liefert deshalb stets dasselbe Ergebnis, und historische Exporte bleiben reproduzierbar. Sind die jüngsten Einträge beispielsweise Montag, Dienstag und Mittwoch, beträgt die aktuelle Serie 3, auch wenn Sie die Berechnung erst später ausführen. Fehlt der Dienstag, ist die Folge zwischen Montag und Mittwoch unterbrochen, denn eine Serie setzt benachbarte Kalendertage voraus. Die längste Serie ist die größte derartige Folge im gesamten Verlauf; sie kann älter und größer als die aktuelle sein. Das Ergebnis nennt außerdem die Zahl eindeutiger Abschlusstage und das zuletzt verwendete Datum. Damit können Sie leicht prüfen, ob Dubletten entfernt und der beabsichtigte Verlauf verarbeitet wurden. Schalttage sowie Monats- und Jahreswechsel gelten als gewöhnliche benachbarte Kalendertage. Diese Regeln liefern nützliche Kennzahlen, ohne von der Geräteuhr oder dem Standort der abfragenden Person abhängig zu sein.
Nutzen Sie das Ergebnis für Auswertungen
Verwenden Sie die aktuelle Serie als Maß für die Beständigkeit am Ende des erfassten Verlaufs und die längste Serie als persönlichen Vergleichswert. Eine Gewohnheits-App kann beide Werte nach dem Import eines Ereignisprotokolls ermitteln. Ein Tabellenablauf kann eine Datumsspalte senden und die Kennzahlen neben einer Monatsauswertung speichern. Da die Eingabereihenfolge keine Rolle spielt, benötigen Clients keinen gesonderten Sortierschritt. Weil Dubletten nur einmal zählen, erhöhen Wiederholungsversuche und zusammengeführte Exporte das Ergebnis nicht künstlich. Interpretieren Sie Serien dennoch mit Bedacht: Sie messen die dokumentierte Regelmäßigkeit, nicht Aufwand, Qualität oder langfristigen Nutzen. Sieht Ihre Gewohnheit Ruhetage vor oder folgt sie einem Wochenplan, bildet eine strikte tägliche Serie möglicherweise nicht das Verhalten ab, das Sie fördern möchten. Passen Sie die Daten in diesem Fall vor der Berechnung an Ihren eigenen Plan an. Für API-Anfragen gilt der angezeigte Grundpreis von $0.002. Die Browserversion verwendet dieselbe reine Logik ohne Netzwerk, Zufall oder Abhängigkeit vom aktuellen Datum.
Anwendungsfälle
Ergänzen Sie eine Gewohnheits-App um Serien
Berechnen Sie aktuelle Beständigkeit und bisherigen Rekord nach jedem Import oder jeder Aktualisierung von Abschlusstagen.
Werten Sie einen Tagebuchexport aus
Wandeln Sie eine Spalte datierter Einträge ohne manuelles Sortieren in klare Regelmäßigkeitswerte um.
Führen Sie mehrere Verläufe zusammen
Kombinieren Sie Daten aus verschiedenen Quellen, ohne dass doppelte Abschlüsse eine Serie künstlich verlängern.
Häufige Fragen
Was bedeutet aktuelle Serie?
Das ist die Folge aufeinanderfolgender Tage bis zum jüngsten Datum im angegebenen Verlauf. Ein Vergleich mit dem heutigen Datum findet nicht statt.
Verlängern doppelte Daten eine Serie?
Nein. Jeder Kalendertag zählt nur einmal, auch wenn er mehrfach in der Eingabe vorkommt.
Müssen die Daten sortiert sein?
Nein. Sie werden vor der Berechnung geprüft, dedupliziert und sortiert.
Was geschieht bei einer leeren Liste?
Die Anfrage liefert einen Fehler für ungültige Eingaben, da ohne mindestens ein Abschlussdatum keine Serie berechnet werden kann.
Werden Schaltjahre und Monatswechsel unterstützt?
Ja. Gültige benachbarte Daten bleiben über Monats- und Jahreswechsel sowie einen Schalttag hinweg aufeinanderfolgend.
Was kostet eine API-Anfrage?
Für jede API-Anfrage gilt der Grundpreis von $0.002.
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/final3/habit-streak-calculate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"dates":["2026-07-20","2026-07-21","2026-07-23","2026-07-24","2026-07-25"]}'const res = await fetch("https://api.kit.forhosting.com/final3/habit-streak-calculate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"dates": [
"2026-07-20",
"2026-07-21",
"2026-07-23",
"2026-07-24",
"2026-07-25"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/final3/habit-streak-calculate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"dates": [
"2026-07-20",
"2026-07-21",
"2026-07-23",
"2026-07-24",
"2026-07-25"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/final3/habit-streak-calculate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"dates":["2026-07-20","2026-07-21","2026-07-23","2026-07-24","2026-07-25"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"dates":["2026-07-20","2026-07-21","2026-07-23","2026-07-24","2026-07-25"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/final3/habit-streak-calculate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"dates": [
"2026-07-20",
"2026-07-21",
"2026-07-23",
"2026-07-24",
"2026-07-25"
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "final3.habit_streak_calculate",
"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. |