Calcolo della durata sovrapposta tra due intervalli
Una fascia dalle 09:00 alle 12:30 UTC e una dalle 13:15 alle 16:00 in UTC+02:00 condividono 75 minuti, cioè 1,25 ore. Inserisca inizio e fine di due intervalli e ottenga il tempo esatto in comune, o zero se non si incontrano. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Inizio del primo
- 2026-07-25T09:00:00Z
- Fine del primo
- 2026-07-25T12:30:00Z
- Inizio del secondo
- 2026-07-25T13:15:00+02:00
- Fine del secondo
- 2026-07-25T16:00:00+02:00
- Sovrapposizione (millisecondi)
- 4.500.000
- Sovrapposizione (secondi)
- 4500
- Minuti di sovrapposizione
- 75
- Ore di sovrapposizione
- 1,25
Questo calcolatore misura con precisione quanto tempo condividono due intervalli espliciti di data e ora. Inserisca l’inizio e la fine di ciascun intervallo in formato ISO 8601, includendo Z oppure un offset UTC numerico. Il calcolo porta ogni estremo sulla stessa linea temporale UTC, sceglie l’inizio più tardo e la fine più anticipata e restituisce la durata comune in millisecondi, secondi, minuti e ore. Intervalli separati o che si toccano soltanto restituiscono zero, rendendo il risultato pratico per pianificazione, fatturazione, monitoraggio e reportistica.
Definisca entrambi gli intervalli senza ambiguità
Inserisca quattro valori: inizio e fine del primo intervallo, quindi inizio e fine del secondo. Ogni valore deve essere una data e ora ISO 8601 completa, con data di calendario, orario comprensivo di secondi e Z oppure un offset esplicito come +02:00 o -05:30. Rendere obbligatorio l’offset impedisce che un orario locale venga interpretato diversamente su un altro computer.
Ogni inizio deve precedere la relativa fine. Il calcolatore considera gli intervalli semiaperti: l’inizio appartiene all’intervallo, mentre la fine è un limite escluso. Questa convenzione evita di conteggiare due volte lo stesso istante quando prenotazioni, turni o finestre consecutivi si incontrano.
Sono accettate da una a tre cifre decimali per i secondi, normalizzate in millisecondi. Date e componenti orarie vengono convalidati direttamente, quindi valori impossibili producono un errore di input. Utilizzi sempre gli stessi quattro campi, indipendentemente dal fatto che si aspetti o meno una sovrapposizione.
Comprenda il calcolo deterministico in UTC
Prima del confronto, il calcolo colloca i quattro estremi su un’unica linea temporale UTC. Un valore che termina con Z è già espresso in UTC. Da un valore con offset positivo viene sottratto l’offset, mentre a uno con offset negativo esso viene aggiunto.
Due date scritte diversamente possono quindi indicare lo stesso istante. La sovrapposizione comincia dal più tardo dei due inizi e termina alla più anticipata delle due fini. Se tale fine è successiva all’inizio calcolato, la differenza costituisce la durata comune; altrimenti il risultato è esattamente zero.
L’implementazione usa aritmetica del calendario gregoriano e millisecondi interi, senza consultare orologio, impostazioni locali, archivio dei fusi, rete, casualità o Date di JavaScript. Input identici producono sempre risultati identici. L’output esprime la stessa durata in millisecondi, secondi, minuti e ore, così Lei può scegliere l’unità più adatta al proprio sistema.
Applichi il risultato in modo sicuro
Utilizzi la durata di sovrapposizione quando deve confrontare due finestre note: un turno con un’assenza autorizzata, il funzionamento di un’apparecchiatura con una fascia tariffaria, un incidente con l’orario di assistenza o una prenotazione con una disponibilità. Un valore positivo indica quanto tempo è condiviso, non soltanto l’esistenza dell’intersezione. Zero significa che gli intervalli sono separati oppure che uno finisce nell’istante esatto in cui comincia l’altro; in entrambi i casi non condividono tempo trascorso secondo la convenzione semiaperta.
Non arrotondi preventivamente gli estremi salvo necessità aziendale. Converta prima gli orari locali.
Casi d'uso
Misurare la copertura dei turni
Calcoli quanta parte di un turno ricade in una finestra operativa presidiata, retribuita o approvata.
Attribuire il tempo di un incidente
Misuri la parte di un disservizio avvenuta durante un periodo contrattuale di assistenza o servizio.
Verificare conflitti tra prenotazioni
Quantifichi il tempo condiviso da due prenotazioni invece di ricevere soltanto una risposta positiva o negativa.
Domande frequenti
Che cosa accade se gli intervalli non si sovrappongono?
Tutti e quattro i campi della durata restituiscono zero. Accade anche quando uno termina esattamente all’inizio dell’altro.
Sono supportati offset UTC differenti?
Sì. Ogni estremo può usare Z o il proprio offset numerico e tutti vengono confrontati sulla stessa linea temporale UTC.
Gli estremi dell’intervallo sono inclusi?
Il calcolo usa intervalli semiaperti: l’inizio è incluso e la fine esclusa. Gli intervalli adiacenti hanno quindi durata comune zero.
Il calcolo usa il fuso orario del server?
No. Usa aritmetica gregoriana e degli offset senza Date, archivio dei fusi, orologio del computer o impostazioni locali.
Quale unità conviene usare per fatturare o controllare le quote?
Parta dai secondi o dai millisecondi. Le quattro unità sono la stessa quantità convertita, non stime arrotondate separatamente, quindi applichi la sua regola di arrotondamento solo dopo aver ottenuto il risultato.
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/overlap-duration \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"first_start":"2026-07-25T09:00:00Z","first_end":"2026-07-25T12:30:00Z","second_start":"2026-07-25T11:15:00+00:00","second_end":"2026-07-25T14:00:00+00:00"}'const res = await fetch("https://api.kit.forhosting.com/date/overlap-duration", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"first_start": "2026-07-25T09:00:00Z",
"first_end": "2026-07-25T12:30:00Z",
"second_start": "2026-07-25T11:15:00+00:00",
"second_end": "2026-07-25T14:00:00+00:00"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/overlap-duration",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"first_start": "2026-07-25T09:00:00Z",
"first_end": "2026-07-25T12:30:00Z",
"second_start": "2026-07-25T11:15:00+00:00",
"second_end": "2026-07-25T14:00:00+00:00"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/overlap-duration", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"first_start":"2026-07-25T09:00:00Z","first_end":"2026-07-25T12:30:00Z","second_start":"2026-07-25T11:15:00+00:00","second_end":"2026-07-25T14:00:00+00:00"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"first_start":"2026-07-25T09:00:00Z","first_end":"2026-07-25T12:30:00Z","second_start":"2026-07-25T11:15:00+00:00","second_end":"2026-07-25T14:00:00+00:00"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/overlap-duration", 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
{
"first_start": "2026-07-25T09:00:00Z",
"first_end": "2026-07-25T12:30:00Z",
"second_start": "2026-07-25T11:15:00+00:00",
"second_end": "2026-07-25T14:00:00+00:00"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.overlap_duration",
"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
Applichi il risultato in modo sicuro
Per importi o quote, usi overlap_milliseconds o overlap_seconds come valore sorgente e applichi solo dopo la propria regola di arrotondamento documentata. L’endpoint accetta soltanto offset espliciti, non nomi come America/New_York, e non deduce regole stagionali. Ogni richiesta API costa $0.002; il browser offre anche verifiche interattive locali.
Domande tecniche
Quanto costa una richiesta API?
Il prezzo è $0.002 per richiesta. L’esecuzione interattiva nel browser non comporta alcun addebito API.