Quartale zu einem Datum addieren – mit Monatsendkorrektur
Dieser Rechner verschiebt ein ausdrücklich angegebenes ISO-Datum um eine vorzeichenbehaftete ganze Zahl von Quartalen.
Im Browser ausführen – kostenlos
Jedes Quartal entspricht genau drei Kalendermonaten: Ein Quartal nach dem 30. November liegt im Februar des Folgejahres, vier Quartale ergeben ein Kalenderjahr. Fehlt der ursprüngliche Tag im Zielmonat, wird er auf dessen letzten gültigen Tag begrenzt. Die Berechnung nutzt deterministische gregorianische Ganzzahlarithmetik im UTC-Sinn, ohne JavaScript-Date, aktuelle Uhrzeit, Zeitzonenumrechnung, Netzwerk oder Zufall. Sie können sie im Browser kostenlos ausführen oder die API für $0.002 je erfolgreicher Anfrage nutzen, wenn ein reproduzierbares strukturiertes Ergebnis in einen automatisierten Ablauf gehört.
Was das Addieren von Kalenderquartalen bedeutet
Ein Kalenderquartal umfasst drei aufeinanderfolgende Monate und ist keine feste Dauer in Tagen, Stunden oder Sekunden. Ein Quartal verschiebt den Monat daher um drei und bewahrt den Tag, sofern er im Zielmonat vorkommt. Vier Quartale verschieben um zwölf Monate und führen gewöhnlich zum gleichen Monat und Tag des Folgejahres. Das Datum muss strikt als YYYY-MM-DD geschrieben sein und einen echten gregorianischen Tag bezeichnen; quarters muss ganzzahlig sein. Positive Werte gehen vorwärts, negative zurück, null lässt das Datum unverändert. So wird ein Quartal nicht fälschlich mit neunzig Tagen gleichgesetzt, denn reale Dreimonatszeiträume unterscheiden sich wegen Monatslängen und Schaltjahren. Die Antwort enthält Ausgangsdatum und Quartalszahl, das ISO-Ergebnis mit Jahr, Monat und Tag, die entsprechende Monatszahl, den Korrekturstatus und die Länge des Zielmonats. Eine Uhrzeit wird weder angenommen noch abgeleitet, weil eine zivilkalenderische und keine Laufzeitfrage beantwortet wird. Deshalb bleibt das Resultat unabhängig von Ausführungsort und lokaler Zeitzone stabil.
So funktionieren Prüfung und Monatsendkorrektur
Zunächst werden vier Jahres-, zwei Monats- und zwei Tagesziffern mit Bindestrichen verlangt. Danach wird der gregorianische Kalender geprüft: Monate reichen von 01 bis 12, der Tag muss tatsächlich existieren, und der 29. Februar gilt nur in durch vier teilbaren Jahren, ausgenommen nicht durch vierhundert teilbare Jahrhundertjahre. Der Algorithmus wandelt Jahr und Monat in einen ganzzahligen Monatsindex um, multipliziert die Quartalszahl mit drei, addiert den Versatz und gewinnt Zieljahr und -monat zurück. Anschließend wird der Ausgangstag mit der Länge des Zielmonats verglichen. Passt er, bleibt er erhalten; andernfalls wird der letzte Tag verwendet und clamped ist true. So ergibt der 30. November plus ein Quartal den 28. Februar eines normalen oder den 29. eines Schaltjahres. Ergebnisse außerhalb 0001 bis 9999 werden abgelehnt. Sämtliche Schritte verwenden endliche Ganzzahlen, kein Date, keine Uhr, keine lokalisierten Monatsnamen und keine laufzeitabhängigen Zeitzonenregeln.
Praktische Anwendungen und reproduzierbare Integration
Quartalsverschiebungen werden für Finanzberichte, Verlängerungen, Compliance-Prüfungen, Prognosen, Unterricht und Softwaretests benötigt. Finanzteams können den nächsten Prüftermin aus einem Quartalsabschluss ableiten, ohne ein Quartal stillschweigend durch neunzig Tage zu ersetzen. Produktteams prüfen, ob ein kurzer Zielmonat den Tag einer Verlängerung verändert. Analysten bilden Kohortengrenzen, Entwickler erzeugen in jeder Umgebung identische Testdaten. Negative Zahlen rekonstruieren Vergleichsdaten vor einem oder vier Quartalen. Da die Eingabe ein vollständiges Datum enthält und die Engine nie die aktuelle Zeit liest, liefert dieselbe Anfrage stets dieselbe Antwort. Das eignet sich für CI-Prüfungen, Caches, reproduzierbare Dokumentation und auditierte Abläufe. Die Browserausführung ist kostenlos; per API kostet jedes erfolgreiche Element $0.002, ungültige Eingaben werden abgewiesen. Für exakt verstrichene Tage oder Arbeitstage sind andere Werkzeuge vorgesehen. Diese Fähigkeit konzentriert sich bewusst auf ganze Dreimonatsquartale, bewahrt den Tag nach Möglichkeit und korrigiert ihn andernfalls vorhersehbar.
Anwendungsfälle
Planung quartalsweiser Verlängerungen
Verschieben Sie einen Vertrag oder ein Abonnementjubiläum um einen oder mehrere Dreimonatszeiträume mit klarer Monatsendregel.
Vergleiche in Berichten
Gehen Sie ein oder vier Quartale zurück, um reproduzierbare Vergleichsdaten für Vorquartal oder Vorjahr zu erhalten.
Kalender-Testdaten
Erzeugen Sie ohne Date deterministische ISO-Ergebnisse für Schaltjahre, Jahreswechsel und kurze Monate.
Häufige Fragen
Wie lang ist ein Quartal in diesem Rechner?
Ein Quartal entspricht genau drei Kalendermonaten, nicht neunzig Tagen oder einer festen Sekundenzahl.
Kann ich Quartale subtrahieren?
Ja. Geben Sie in quarters eine negative ganze Zahl ein. Das Ergebnis muss zwischen den Jahren 0001 und 9999 liegen.
Was geschieht, wenn der ursprüngliche Tag im Zielmonat fehlt?
Der Tag wird auf den letzten gültigen Tag des Zielmonats begrenzt; das Antwortfeld clamped ist dann true.
Verwendet die Berechnung eine Zeitzone oder das heutige Datum?
Nein. Sie nutzt ein explizites Datum und deterministische Ganzzahlarithmetik ohne Date, Uhr oder Zeitzonenumrechnung.
Was kostet eine API-Anfrage?
Die Browserausführung ist kostenlos. Eine erfolgreiche API-Anfrage kostet $0.002; ungültige Eingaben werden abgelehnt.
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/add-quarters \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"2024-11-30","quarters":1}'const res = await fetch("https://api.kit.forhosting.com/date/add-quarters", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"date": "2024-11-30",
"quarters": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/add-quarters",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"date": "2024-11-30",
"quarters": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/add-quarters", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"date":"2024-11-30","quarters":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"date":"2024-11-30","quarters":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/add-quarters", 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": "2024-11-30",
"quarters": 1
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.add_quarters",
"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 |
quarters_min | -39996 |
quarters_max | 39996 |
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. |