Sommare due durate ISO 8601
Inserisca due durate ISO 8601 e ottenga la somma come un'unica durata pulita: P1W più P3D fa P10D, perché ogni settimana diventa sette giorni. Secondi, minuti, ore e mesi vengono riportati e le unità a zero spariscono. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Durata 1
- P1Y2M3DT4H5M6S
- Durata 2
- P2Y1M10DT1H55M54S
- Sum
- P3Y3M13DT6H1M
- Anni
- 3
- Mesi
- 3
- Giorni
- 13
Sommare due di queste stringhe a mano è soggetto a errori: le settimane devono diventare giorni, i secondi devono riportarsi in minuti e i mesi in anni, senza inventare una conversione da giorni a mesi che dipenda da una data di inizio. Questa calcolatrice per sommare due durate ISO 8601 accetta due stringhe non negative, analizza ciascun designatore in ordine fisso, espande le settimane in blocchi di sette giorni, somma ogni componente e restituisce una durata normalizzata più i campi anno, mese, giorno, ora, minuto e secondo.
Cosa significa sommare durate ISO 8601
Una durata ISO 8601 descrive una lunghezza di tempo con i designatori Y per gli anni, M per i mesi, W per le settimane, D per i giorni e, dopo un marcatore T, H per le ore, M per i minuti e S per i secondi. Valori tipici includono P1Y per un anno, P2M15D per due mesi e quindici giorni, PT1H30M per novanta minuti scritti come un'ora e trenta minuti, e la forma completa P1Y2M3DT4H5M6S.
Sommare due durate è un problema componente per componente: gli anni si sommano agli anni, i mesi ai mesi, e così via. Le settimane sono espanse in giorni con il fattore fisso sette, così che P1W più P3D diventi P10D anziché una stringa mista di settimane e giorni. Dopo la somma, il motore normalizza per riporto i campi di tempo e mese con regole intere deterministiche: sessanta secondi diventano un minuto, sessanta minuti un'ora, ventiquattro ore un giorno e dodici mesi un anno.
I giorni non vengono mai convertiti in mesi perché la lunghezza del mese dipende da una data di inizio di calendario che questo strumento deliberatamente non riceve. Il risultato è una stringa canonica che omette i designatori zero, usa P0D quando ogni componente è zero e non emette mai una T nuda senza campi di tempo.
Dove combinare due durate ISO conviene
I team di prodotto e piattaforma combinano periodi di locazione, estensioni di prova e finestre di manutenzione già memorizzati come durate ISO in sistemi di configurazione o fatturazione; aggiungere P1Y a P3M deve dare P1Y3M senza approssimazioni di giorni in virgola mobile. Educatori e autori di documentazione dimostrano l'aritmetica delle durate accanto a tabelle RFC e ISO senza numeri seriali di fogli di calcolo che includono silenziosamente l'ora del giorno.
Gli script operativi uniscono finestre di retention di backup o backoff di retry espressi come stringhe PnD e PTnH da due fonti e scrivono un unico valore normalizzato in un registro. Tenga entrambe le stringhe piccole, fissi sum e i campi componente nei test, e otterrà somme di durata riproducibili per compiti, plugin LMS, edge worker e landing del catalogo che si posizionano per sommare due durate ISO 8601 senza montare una libreria di calendario completa.
Casi d'uso
Fatturazione ed estensioni di prova
Sommi la durata base di un abbonamento a una finestra di estensione (ad esempio P1Y più P1M) e memorizzi la somma normalizzata nella configurazione o nelle fatture.
Unire finestre di retention e SLA
Combini due durate di policy da sistemi diversi in una stringa canonica PnYnMnDTnHnMnS per registri e runbook.
Domande frequenti
Le settimane sono supportate?
Sì. Un designatore W è accettato in ingresso e convertito in sette giorni prima della somma, così P1W più P3D diventa P10D nella somma normalizzata.
Perché i giorni non vengono convertiti in mesi?
La lunghezza del mese dipende da una data di inizio di calendario. Questo strumento somma durate pure senza data di riferimento, quindi i giorni restano giorni mentre i mesi si riportano ancora in anni a dodici.
Come si sommano due durate ISO 8601?
Ogni unità si somma alla stessa unità e poi l'eccedenza passa alla successiva. Per esempio, P1Y2M3DT4H5M6S più P2Y1M10DT1H55M54S fa P3Y3M13DT6H1M: minuti e secondi che arrivano a 60 salgono all'unità superiore.
Posso usare valori negativi o decimali?
No. Ogni durata deve essere non negativa, con numeri interi e le lettere nell'ordine standard. Segni più o meno, frazioni, una P da sola e lettere fuori ordine vengono rifiutati invece di essere indovinati.
Quali unità vengono riportate dopo la somma?
Sessanta secondi diventano un minuto, sessanta minuti un'ora, ventiquattro ore un giorno e dodici mesi un anno. Così, sommare 5 e 55 minuti aggiunge un'ora alle ore.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"duration1": "P1Y2M3DT4H5M6S",
"duration2": "P2Y1M10DT1H55M54S"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.iso_duration_add",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Le stringhe di durata ISO 8601 come P1Y2M3DT4H5M6S compaiono in API, calendari, accordi sul livello di servizio e file di configurazione ogni volta che occorre scrivere un intervallo di tempo senza ancorarlo a una data di calendario.
Cosa significa sommare durate ISO 8601
Quel contratto coincide con ciò che le librerie di validazione e i moduli di schema si aspettano quando controllano PnYnMnDTnHnMnS senza rianalizzare testo libero.
Contratto di ingresso, forma della risposta ed errori
Ciascun valore deve essere una durata ISO 8601 non negativa che rispetti la grammatica ordinata dei designatori PnYnMnWnDTnHnMnS con sole componenti intere. In caso di successo il corpo restituisce entrambe le entrate come durate canoniche con le settimane già espanse in giorni, la stringa sum dopo la normalizzazione completa per riporto, i sei campi interi non negativi years, months, days, hours, minutes e seconds, e un breve promemoria della formula dell'algoritmo. Le richieste rifiutate non vengono addebitate. Invii un corpo JSON con due campi stringa obbligatori: duration1 e duration2. I segni più o meno iniziali sono rifiutati così che la somma sia sempre una lunghezza non negativa; stringhe vuote, P nuda, designatori fuori ordine, parti frazionarie e testo non di durata falliscono con invalid_input indicando il campo. Gli alias a, first, left e d1 mappano a duration1; b, second, right e d2 a duration2, così fogli di calcolo e moduli possono riutilizzare nomi di colonna brevi. Esempio: duration1 uguale a P1Y2M3DT4H5M6S e duration2 uguale a P2Y1M10DT1H55M54S producono sum P3Y3M13DT6H1M perché cinque minuti più cinquantacinque minuti riportano un'ora, e sei secondi più cinquantaquattro restano sotto sessanta. Abbini l'esecuzione gratuita del browser in questa pagina all'API a pagamento quando le serve la stessa somma in una pipeline automatizzata senza reimplementare parser di durata in ogni servizio.
Dove combinare due durate ISO conviene
Poiché l'implementazione è parse pura di livello A, ogni chiamata riuscita costa il prezzo base pubblicato $0.002 senza token di modello né rete in uscita, e la validazione fallita non consuma saldo.
Casi di integrazione
Fixture di CI per scheduler
Verifichi che PT90M più PT30M si normalizzi in PT2H nei test unitari senza dipendere da Date, dai locale o dall'orologio dell'host.
Domande tecniche
Come si sommano due stringhe di durata ISO 8601?
Invii duration1 e duration2 come stringhe PnYnMnWnDTnHnMnS non negative. L'API espande le settimane in giorni, somma ogni componente, normalizza per riporto e restituisce sum più years, months, days, hours, minutes e seconds.
Quali ingressi vengono rifiutati?
Campi mancanti, stringhe vuote, P nuda, segni iniziali, componenti frazionarie, designatori fuori ordine e testo non di durata falliscono con invalid_input e non vengono addebitati.
Quanto costa il sommatore di durate ISO?
Lo strumento nel browser è gratuito. Le richieste API usano il saldo prepagato KIT a $0.002 per chiamata riuscita; l'ingresso non valido non viene addebitato.