Zwei ISO-8601-Dauern addieren
Geben Sie zwei ISO-8601-Dauern ein und erhalten Sie die Summe als eine saubere Dauer: P1W plus P3D ergibt P10D, weil jede Woche zu sieben Tagen wird. Sekunden, Minuten, Stunden und Monate werden übertragen, Nulleinheiten fallen weg. 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
- Dauer 1
- P1Y2M3DT4H5M6S
- Dauer 2
- P2Y1M10DT1H55M54S
- Sum
- P3Y3M13DT6H1M
- Jahre
- 3
- Monate
- 3
- Tage
- 13
ISO-8601-Dauerzeichenketten wie P1Y2M3DT4H5M6S erscheinen in APIs, Kalendern, Service-Level-Agreements und Konfigurationsdateien, sobald eine Zeitspanne ohne Verankerung an einem Kalenderdatum geschrieben werden muss. Zwei solcher Zeichenketten von Hand zu addieren ist fehleranfällig: Wochen müssen zu Tagen werden, Sekunden in Minuten und Monate in Jahre übertragen werden, ohne eine tag-zu-monat-Umwandlung zu erfinden, die von einem Startdatum abhängt. Dieser Rechner zum Addieren zweier ISO-8601-Dauern nimmt zwei nicht negative Dauerzeichenketten an, parst jeden Designator in fester Reihenfolge, expandiert Wochen in Sieben-Tage-Blöcke, addiert jede Komponente und liefert eine normalisierte Dauer plus die Felder Jahr, Monat, Tag, Stunde, Minute und Sekunde.
Was die Addition von ISO-8601-Dauern bedeutet
Eine ISO-8601-Dauer beschreibt eine Zeitlänge mit den Designatoren Y für Jahre, M für Monate, W für Wochen, D für Tage und nach einem T-Marker H für Stunden, M für Minuten und S für Sekunden. Typische Werte sind P1Y für ein Jahr, P2M15D für zwei Monate und fünfzehn Tage, PT1H30M für neunzig Minuten als eine Stunde dreißig Minuten und die vollständige Form P1Y2M3DT4H5M6S. Zwei Dauern zu addieren ist ein komponentenweises Problem: Jahre addieren sich zu Jahren, Monate zu Monaten und so weiter.
Wochen werden mit dem festen Faktor sieben in Tage expandiert, sodass P1W plus P3D zu P10D wird statt zu einer gemischten Wochen-und-Tage-Zeichenkette. Nach der Addition normalisiert die Engine Zeit- und Monatsfelder mit deterministischen Ganzzahlregeln per Übertrag: sechzig Sekunden werden eine Minute, sechzig Minuten eine Stunde, vierundzwanzig Stunden ein Tag und zwölf Monate ein Jahr. Tage werden nie in Monate umgerechnet, weil die Monatslänge von einem kalendarischen Startdatum abhängt, das dieses Werkzeug bewusst nicht entgegennimmt.
Das Ergebnis ist eine kanonische Zeichenkette, die Null-Designatoren weglässt, bei allen Null-Komponenten P0D verwendet und nie ein nacktes T ohne Zeitfelder ausgibt.
Wo das Kombinieren zweier ISO-Dauern sich lohnt
Produkt- und Plattformteams kombinieren Mietzeiträume, Testverlängerungen und Wartungsfenster, die bereits als ISO-Dauern in Konfigurations- oder Abrechnungssystemen liegen; P1Y zu P3M zu addieren soll P1Y3M ergeben, ohne Gleitkomma-Tagesnäherungen. Lehrende und Dokumentationsautoren demonstrieren Dauerarithmetik neben RFC- und ISO-Tabellen ohne Tabellen-Seriennummern, die stillschweigend Tageszeiten einbeziehen. Betriebsskripte führen Backup-Aufbewahrungsfenster oder Retry-Backoffs aus zwei Quellen als PnD- und PTnH-Zeichenketten zusammen und schreiben einen einzigen normalisierten Wert in ein Register.
Halten Sie beide Zeichenketten klein, pinnen Sie sum und die Komponentenfelder in Tests, und Sie erhalten reproduzierbare Daueraddition für Hausaufgaben, LMS-Plugins, Edge-Worker und Katalog-Landings, die für das Addieren zweier ISO-8601-Dauern ranken, ohne eine vollständige Kalenderbibliothek aufzusetzen.
Anwendungsfälle
Abrechnung und Testverlängerungen
Addieren Sie die Basisdauer eines Abonnements zu einem Verlängerungsfenster (zum Beispiel P1Y plus P1M) und speichern Sie die normalisierte Summe in Konfiguration oder Rechnungen.
Retention- und SLA-Fenster zusammenführen
Kombinieren Sie zwei Richtliniendauern aus verschiedenen Systemen zu einer kanonischen PnYnMnDTnHnMnS-Zeichenkette für Register und Runbooks.
Häufige Fragen
Werden Wochen unterstützt?
Ja. Ein W-Designator wird bei der Eingabe akzeptiert und vor der Addition in sieben Tage umgerechnet, sodass P1W plus P3D in der normalisierten Summe zu P10D wird.
Warum werden Tage nicht in Monate umgerechnet?
Die Monatslänge hängt von einem kalendarischen Startdatum ab. Dieses Werkzeug addiert reine Dauern ohne Referenzdatum, daher bleiben Tage Tage, während Monate weiterhin zu zwölf in Jahre übertragen.
Wie addiere ich zwei ISO-8601-Dauern?
Jede Einheit wird zur gleichen Einheit addiert, danach wird der Überschuss weitergegeben. So ergibt P1Y2M3DT4H5M6S plus P2Y1M10DT1H55M54S die Summe P3Y3M13DT6H1M: Minuten und Sekunden, die 60 erreichen, wandern in die nächste Einheit.
Kann ich negative Werte oder Dezimalzahlen verwenden?
Nein. Jede Dauer muss nicht negativ sein, ganze Zahlen enthalten und die Buchstaben in der üblichen Reihenfolge führen. Vorzeichen, Bruchteile, ein einzelnes P und vertauschte Buchstaben werden abgelehnt statt erraten.
Welche Einheiten werden nach dem Addieren übertragen?
Sechzig Sekunden werden zu einer Minute, sechzig Minuten zu einer Stunde, vierundzwanzig Stunden zu einem Tag und zwölf Monate zu einem Jahr. So ergeben 5 plus 55 Minuten eine zusätzliche Stunde.
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/iso-duration-add \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"duration1":"P1Y2M3DT4H5M6S","duration2":"P2Y1M10DT1H55M54S"}'const res = await fetch("https://api.kit.forhosting.com/date/iso-duration-add", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"duration1": "P1Y2M3DT4H5M6S",
"duration2": "P2Y1M10DT1H55M54S"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/iso-duration-add",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"duration1": "P1Y2M3DT4H5M6S",
"duration2": "P2Y1M10DT1H55M54S"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/iso-duration-add", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"duration1":"P1Y2M3DT4H5M6S","duration2":"P2Y1M10DT1H55M54S"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"duration1":"P1Y2M3DT4H5M6S","duration2":"P2Y1M10DT1H55M54S"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/iso-duration-add", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"duration1": "P1Y2M3DT4H5M6S",
"duration2": "P2Y1M10DT1H55M54S"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.iso_duration_add",
"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
Was die Addition von ISO-8601-Dauern bedeutet
Dieser Vertrag entspricht dem, was Validierungsbibliotheken und Schema-Formulare erwarten, wenn sie PnYnMnDTnHnMnS prüfen, ohne Freitext neu zu parsen.
Eingabevertrag, Antwortform und Fehlerverhalten
Jeder Wert muss eine nicht negative ISO-8601-Dauer sein, die der geordneten Designator-Grammatik PnYnMnWnDTnHnMnS nur mit ganzzahligen Komponenten entspricht. Bei Erfolg gibt der Body beide Eingaben als kanonische Dauern mit bereits in Tage expandierten Wochen zurück, die Summe sum nach vollständiger Übertragsnormalisierung, die sechs nicht negativen Ganzzahlfelder years, months, days, hours, minutes und seconds sowie eine kurze Formelerinnerung des Algorithmus. Abgelehnte Anfragen werden nicht berechnet. Senden Sie einen JSON-Body mit zwei Pflicht-Stringfeldern: duration1 und duration2. Führende Plus- oder Minuszeichen werden abgelehnt, damit die Summe immer eine nicht negative Länge ist; leere Zeichenketten, nacktes P, Designatoren außer der Reihe, Bruchanteile und Nicht-Dauer-Text scheitern mit invalid_input und benennen das Feld. Die Aliase a, first, left und d1 mapieren auf duration1; b, second, right und d2 auf duration2, sodass Tabellen und Formulare kurze Spaltennamen wiederverwenden können. Beispiel: duration1 gleich P1Y2M3DT4H5M6S und duration2 gleich P2Y1M10DT1H55M54S ergeben sum P3Y3M13DT6H1M, weil fünf Minuten plus fünfundfünfzig Minuten eine Stunde übertragen und sechs Sekunden plus vierundfünfzig unter sechzig bleiben. Kombinieren Sie den kostenlosen Browserlauf auf dieser Seite mit der kostenpflichtigen API, wenn Sie dieselbe Addition in einer automatisierten Pipeline brauchen, ohne Dauer-Parser in jedem Dienst neu zu implementieren.
Wo das Kombinieren zweier ISO-Dauern sich lohnt
Weil die Implementierung reines Parse-Tier-A ist, kostet jeder erfolgreiche Aufruf den veröffentlichten Grundpreis $0.002 ohne Modell-Tokens und ohne ausgehendes Netz, und fehlgeschlagene Validierung wird nicht berechnet.
Integrationsbeispiele
CI-Fixtures für Scheduler
Prüfen Sie in Unit-Tests, dass PT90M plus PT30M zu PT2H normalisiert, ohne von Date, Locales oder der Host-Uhr abzuhängen.
Technische Fragen
Wie addiert man zwei ISO-8601-Dauerzeichenketten?
Senden Sie duration1 und duration2 als nicht negative PnYnMnWnDTnHnMnS-Zeichenketten. Die API expandiert Wochen zu Tagen, addiert jede Komponente, normalisiert per Übertrag und liefert sum plus years, months, days, hours, minutes und seconds.
Welche Eingaben werden abgelehnt?
Fehlende Felder, leere Zeichenketten, nacktes P, führende Vorzeichen, Bruchkomponenten, Designatoren außer der Reihe und Nicht-Dauer-Text scheitern mit invalid_input und werden nicht berechnet.
Was kostet der ISO-Dauer-Addierer?
Das Browser-Werkzeug ist kostenlos. API-Anfragen nutzen das vorausbezahlte KIT-Guthaben zu $0.002 pro erfolgreichem Aufruf; ungültige Eingabe wird nicht berechnet.