Schnittmenge von Intervallen
Geben Sie zwei Zeitintervalle ein und erhalten Sie den gemeinsamen Abschnitt: 10:00 bis 12:00 und 11:00 bis 13:00 UTC überschneiden sich von 11:00 bis 12:00, also genau eine Stunde. Berühren sie sich nur, bleibt das Ergebnis leer. 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
- Beginn von Intervall A
- 2020-01-01T10:00:00.000Z
- Ende von Intervall A
- 2020-01-01T12:00:00.000Z
- Beginn von Intervall B
- 2020-01-01T11:00:00.000Z
- Ende von Intervall B
- 2020-01-01T13:00:00.000Z
- Beginn der Überschneidung
- 2020-01-01T11:00:00.000Z
- Ende der Überschneidung
- 2020-01-01T12:00:00.000Z
- Überschneidungsdauer (Millisekunden)
- 3.600.000
- Überschneidungsdauer (Stunden)
- 1
Berechnet die Überlappung zweier ISO-Intervalle mit strikter Ordnung, Dauer in Millisekunden und Stunden. Kostenlos, deterministisch und privat im Browser.
Was die Schnittmenge zweier Zeitintervalle bedeutet
Zwei Zeitintervalle überschneiden sich, wenn es einen Abschnitt gibt, der zu beiden gehört. Denken Sie an zwei Raumbuchungen oder an zwei Störungsfenster in einer Support-Übersicht: Gefragt ist nicht, wie lange jedes dauert, sondern welchen Teil sie gemeinsam haben. Die Regel ist kurz. Der gemeinsame Abschnitt beginnt beim späteren der beiden Anfänge und endet beim früheren der beiden Enden. Liegt dieser Beginn strikt vor diesem Ende, gibt es eine Überschneidung, und Sie erhalten den Abschnitt mit seiner Dauer in Millisekunden und Stunden. Bei 10:00 bis 12:00 und 11:00 bis 13:00 UTC reicht sie von 11:00 bis 12:00.
Grenzfälle, die oft verwirren
Intervalle, die sich nur berühren, etwa wenn eines um 12:00 endet und das nächste um 12:00 beginnt, teilen sich keine Zeit, weil das Ende als ausgeschlossen gilt; das Ergebnis ist leer, beide Dauern sind null. Das Werkzeug liefert nie die Vereinigung beider Intervalle, nur ihren gemeinsamen Teil. Jeder Wert ist ein vollständiger Zeitpunkt nach ISO 8601, das Ergebnis wird in UTC angegeben. Ein Intervall, das vor seinem Beginn endet, oder ein fehlender oder ungültiger Wert wird abgelehnt, statt als leere Überschneidung zu gelten.
Eingaben, Ausgaben und Grenzfälle
Benachbarte Intervalle, die sich nur in einem Punkt berühren, ergeben ein leeres Resultat, weil der Vergleich strikt kleiner ist — passend zu Terminplanern, die das Ende exklusiv behandeln. Überlappende Fenster liefern nur den gemeinsamen Abschnitt, nie die Vereinigung. Falsche Typen, fehlende Felder und invertierte Bereiche scheitern früh, damit Clients keine stillen Null-Überlappungen sehen.
Goldene Beispiele decken eine einstündige Überlappung, ein disjunktes leeres Paar, einen invertierten A-Bereich und eine völlig fehlende Nutzlast ab, damit Ihre Oberflächenbindungen ehrlich bleiben.
Anwendungsfälle
Meeting-Überlappung
Finden Sie das gemeinsame Fenster zweier Buchungen mit stabilen Dauern.
Support-Dashboards
Markieren Sie, wann zwei Vorfallsfenster zusammenfallen — ohne Tabellenkalkulation.
Automatisierung
Rufen Sie dieselbe reine Funktion aus Skripten auf, die Kalenderfeeds mergen.
Häufige Fragen
Ist das kostenlos?
Ja. Tier A läuft vollständig im Browser ohne Konto.
Sind Ergebnisse stabil?
Ja. Deterministische Mathematik und goldene Beispiele fixieren den Vertrag.
Wie wird die Überschneidung zweier Intervalle berechnet?
Der gemeinsame Abschnitt beginnt beim späteren der beiden Anfänge und endet beim früheren der beiden Enden. Liegt dieser Beginn vor diesem Ende, teilen sich die Intervalle Zeit; sonst ist das Ergebnis leer und die Dauer null.
Was passiert, wenn ein Intervall genau dann endet, wenn das andere beginnt?
Das Ergebnis ist leer. Das Ende jedes Intervalls gilt als ausgeschlossen, wie in den meisten Buchungssystemen, daher teilen sich zwei Intervalle, die sich nur in einem Augenblick berühren, keine Zeit.
Was geschieht, wenn ein Intervall vor seinem Beginn endet?
Es wird abgelehnt. Fehlende Werte, ungültige Zeitangaben und umgekehrte Intervalle führen zu einer klaren Meldung, sodass ein Tippfehler nie still als leere Überschneidung durchgeht.
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/interval-intersection \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a_start":"2020-01-01T10:00:00.000Z","a_end":"2020-01-01T12:00:00.000Z","b_start":"2020-01-01T11:00:00.000Z","b_end":"2020-01-01T13:00:00.000Z"}'const res = await fetch("https://api.kit.forhosting.com/date/interval-intersection", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a_start": "2020-01-01T10:00:00.000Z",
"a_end": "2020-01-01T12:00:00.000Z",
"b_start": "2020-01-01T11:00:00.000Z",
"b_end": "2020-01-01T13:00:00.000Z"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/interval-intersection",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a_start": "2020-01-01T10:00:00.000Z",
"a_end": "2020-01-01T12:00:00.000Z",
"b_start": "2020-01-01T11:00:00.000Z",
"b_end": "2020-01-01T13:00:00.000Z"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/interval-intersection", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a_start":"2020-01-01T10:00:00.000Z","a_end":"2020-01-01T12:00:00.000Z","b_start":"2020-01-01T11:00:00.000Z","b_end":"2020-01-01T13:00:00.000Z"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a_start":"2020-01-01T10:00:00.000Z","a_end":"2020-01-01T12:00:00.000Z","b_start":"2020-01-01T11:00:00.000Z","b_end":"2020-01-01T13:00:00.000Z"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/interval-intersection", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"a_start": "2020-01-01T10:00:00.000Z",
"a_end": "2020-01-01T12:00:00.000Z",
"b_start": "2020-01-01T11:00:00.000Z",
"b_end": "2020-01-01T13:00:00.000Z"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.interval_intersection",
"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
So funktioniert die Intervall-Schnittmenge
Der Schnitt-Start ist das Maximum der beiden Starts und das Schnitt-Ende das Minimum der beiden Enden. Zwei zivile Intervalle A und B werden durch vier ISO-8601-Zeitstempel definiert: a_start, a_end, b_start und b_end. Die Engine parst jede Grenze mit dem Date-Parser der Umgebung, lehnt Nicht-Zeichenketten und nicht parsebare Werte mit klaren invalid_input-Meldungen ab, die das Feld nennen, und verlangt, dass a_start strikt kleiner als a_end und b_start strikt kleiner als b_end ist. Ist der Start strikt kleiner als das Ende, ist das Ergebnis nicht leer und trägt start und end als UTC-ISO-Zeichenketten plus duration_ms und duration_hours gerundet auf eine stabile Dezimalstelle; sonst ist empty wahr, start und end sind null und beide Dauerfelder sind null.
Eingaben, Ausgaben und Grenzfälle
Alle vier Felder sind Pflicht-Zeichenketten, damit die Schema-Sonde aus den veröffentlichten Beispielen eine vollständige Probe bauen kann.
Determinismus, Grenzen und Integration
Die Implementierung ist reine Parse-Logik ohne Netz, Uhr oder Zufall jenseits der gelieferten Zeitstempel, sodass identische Eingaben stets identische Ausgaben erzeugen. Extrem ferne Zeitstempel unterliegen weiterhin der IEEE-Millisekundenpräzision des Plattform-Date-Typs; dokumentieren Sie diesen Vertrag beim Speichern. Prüfen Sie das veröffentlichte Schema, bevor Sie Metriken anbinden, und binden Sie nur die dokumentierten Erfolgsschlüssel empty, start, end, duration_ms und duration_hours.
Technische Fragen
Wird das Netz genutzt?
Nein. Die Parse-Engine bleibt auf dem Gerät.
Was bei ungültiger Eingabe?
Sie erhalten invalid_input mit klarer englischer Meldung.
Wer ist der Autor?
Aspire in der ForHosting-KIT-Werkstatt.