Twee tijdsintervallen overlappen wanneer elk interval begint voordat het andere eindigt. Deze test omvat volledige insluiting. Zo pas je die toe in Numbers op je Mac om publicatievensters te vergelijken, datums te valideren en aansluitende eindpunten af te handelen.

Deze workflow is bedoeld voor iemand die publicatievensters in een spreadsheet plant. Alle datums en labels hieronder zijn fictief. Je vergelijkt twee vensters per rij en krijgt een duidelijk resultaat zonder een programma te schrijven.

Wanneer is er sprake van overlap?

Bepaal eerst of een interval het eindtijdstip omvat. Dit artikel gebruikt een interval dat het begintijdstip wel en het eindtijdstip niet omvat, genoteerd als [start, end). Een venster van 09:00 tot 12:00 omvat het begin en stopt om 12.00 uur. Een ander venster dat begint op 12:00 overlapt er dus niet mee. Dit sluit aan bij de conventie voor gebeurtenissen in iCalendar: DTSTART is inclusief en DTEND is niet-inclusief. RFC 5545, sectie 3.6.1.

Voor twee geldige intervallen met een positieve lengte is de volledige overlappentest:

A.start < B.end AND B.start < A.end

De redenering is eenvoudig. Twee vensters zijn gescheiden als A eindigt vóór of precies wanneer B begint, of als B eindigt vóór of precies wanneer A begint. Als geen van beide scheidingsvoorwaarden geldt, hebben ze tijd gemeen. Hieruit blijkt ook waarom voor insluiting geen extra overlapvoorwaarde nodig is.

Neem A van 09:00 tot 12:00. Als B loopt van 08:00 tot 13:00, valt geen van beide eindpunten van B binnen A, maar omvat B wel heel A. Een test die alleen controleert of B binnen A begint of eindigt, zou dit geval missen. De regel met twee vergelijkingen vangt het wel.

Houd deze fictieve testset naast je spreadsheet. Alle tijden hieronder vallen op 10 november 2026 en gebruiken dezelfde tijdsbasis.

Venster A Venster B Verwacht resultaat Reden
09:00–12:00 11:00–13:00 Overlap Gedeeltelijke overlap
09:00–12:00 10:00–11:00 Overlap A omvat B
09:00–12:00 08:00–13:00 Overlap B omvat A
09:00–12:00 09:00–12:00 Overlap Identieke vensters
09:00–12:00 12:00–13:00 Geen overlap Alleen de eindpunten raken elkaar
09:00–12:00 13:00–14:00 Geen overlap Ruimte tussen de vensters

Stel vergelijkbare datums en tijden in Numbers in

Gebruik volledige datums en tijden voor getimede publicatievensters. Een kloktijd alleen maakt geen onderscheid tussen deze ochtend en morgenochtend. Numbers vult ontbrekende onderdelen ook aan: als je alleen een tijd invoert, wordt de datum van vandaag toegevoegd. Als je een datum of tijd verbergt, verandert de weergave, maar het opgeslagen onderdeel blijft meedoen in berekeningen. Datums, valuta en meer opmaken in Numbers op de Mac.

Maak één tabel met de volgende kolommen en gebruik rij 1 voor de koppen:

Kolom Kop Doel
A Paar Een neutraal label voor de vergelijking
B A begint Begin van het eerste venster
C A eindigt Exclusief einde van het eerste venster
D B begint Begin van het tweede venster
E B eindigt Exclusief einde van het tweede venster
F Invoercontrole Of vergelijken mogelijk is
G Overlapresultaat Het antwoord

Selecteer de invoercellen in kolommen B tot en met E. Kies in de navigatiekolom Opmaak de optie Cel en stel Gegevensnotatie in op Datum en tijd. Kies een weergave waarin zowel de datum als de tijd zichtbaar zijn. Met Slimme celweergave onder in het venster kun je beide onderdelen van een geselecteerde waarde bekijken. Instructies van Apple voor het opmaken van datums en tijden.

Voer voor een reproduceerbaar eerste voorbeeld Voorbeeldpaar in A2 in en plaats de volgende formules in de aangegeven cellen. Hiermee wordt A opgebouwd als 09:00–12:00 en B als 10:00–11:00 op 10 november 2026. Behandel elk eindpunt in dit voorbeeld als UTC en noteer die afspraak naast de tabel.

Cel Formule
B2 =DATE(2026,11,10)+DURATION(0,0,9)
C2 =DATE(2026,11,10)+DURATION(0,0,12)
D2 =DATE(2026,11,10)+DURATION(0,0,10)
E2 =DATE(2026,11,10)+DURATION(0,0,11)

DATE bouwt een datum op uit jaar, maand en dag en voorkomt zo ambigue datumreeksen. DURATION accepteert weken, dagen en uren als eerste drie argumenten, dus DURATION(0,0,9) levert negen uur op. Dit zijn spreadsheetformules, geen Terminal-opdrachten. DATE, DURATION.

Als je een formule wilt invoeren, selecteer je de doelcel, typ je =, voer je de expressie in en druk je op Return. Numbers ondersteunt vergelijkingen tussen celwaarden en geeft de Booleaanse resultaten ervan weer. Als je instellingen een komma als decimaalteken gebruiken, gebruik dan puntkomma’s tussen functieargumenten in plaats van komma’s. Waarden berekenen met gegevens in tabelcellen in Numbers op de Mac, Overzicht van functies.

Valideer de vensters voordat je op overlap test

Vereis voor deze taak vier herkende datum-/tijdwaarden en een eindtijd die strikt later valt dan de bijbehorende begintijd. Een omgekeerd interval moet worden gecorrigeerd. Ook voor een publicatievenster zonder lengte is een aparte beslissing nodig, omdat het volgens de gekozen conventie geen tijd beslaat.

Voer deze formule in F2 in:

=IF(AND(ISDATE(B2),ISDATE(C2),ISDATE(D2),ISDATE(E2)),IF(AND(B2<C2,D2<E2),\"Ready\",\"Invalid window\"),\"Check dates\")

De buitenste test controleert of elk eindpunt een datumwaarde is. De binnenste test controleert de volgorde van beide vensters. ISDATE herkent datumwaarden, AND vereist dat al zijn voorwaarden waar zijn en IF selecteert het bijbehorende resultaat. ISDATE, AND, IF.

Het voorbeeld hoort Ready op te leveren. Als het Check dates oplevert, controleer dan de invoercellen in plaats van de rij als afzonderlijke vensters te behandelen. Als het Invalid window oplevert, controleer dan op gelijke eindpunten, omgekeerde invoer of een ontbrekende datum van de volgende dag. Laat eventuele formulefouten zichtbaar totdat je de oorzaak hebt verholpen.

Detecteer overlap, ook bij volledige insluiting

Voer deze formule in G2 in:

=IF(F2=\"Ready\",IF(AND(B2<E2,D2<C2),\"Overlap\",\"No overlap\"),\"Check inputs\")

Voor een geldige rij voeren de twee vergelijkingen de overlapregel rechtstreeks uit: B2 is het begin van A, E2 het einde van B, D2 het begin van B en C2 het einde van A. AND geeft alleen waar terug als beide vergelijkingen slagen. Documentatie van Apple over AND.

Het voorbeeld levert Overlap op, omdat B volledig binnen A valt. Wijzig het uur in D2 in 8 en het uur in E2 in 13; het resultaat moet nog steeds Overlap zijn, nu omdat B A omvat. Wijzig ze in 12 en 13; het resultaat moet No overlap worden.

Gebruik de eerdere testtabel om de overige gevallen te controleren. Voer voor extra vergelijkingen het volgende paar op de volgende rij in en kopieer de formules uit F en G naar die rij. Controleer de gekopieerde formules om te bevestigen dat de verwijzingen naar de nieuwe rij wijzen.

Deze indeling vergelijkt de twee vensters die je op elke rij opgeeft. Ze vergelijkt niet automatisch elk venster uit een afzonderlijke gebeurtenissenlijst met alle andere gebeurtenissen. Maak voor een kleine lijst één rij voor elk afzonderlijk paar dat je moet onderzoeken en vermijd dubbele paren in omgekeerde volgorde.

Bepaal welk venster het andere omvat

Overlap en insluiting beantwoorden verschillende vragen. Als je ook wilt weten of A B volledig omvat, voeg dan een kolom H toe met de naam A omvat B en voer het volgende in:

=IF(F2=\"Ready\",AND(B2<=D2,E2<=C2),\"Check inputs\")

Voeg voor B omvat A een kolom I toe en voer het volgende in:

=IF(F2=\"Ready\",AND(D2<=B2,C2<=E2),\"Check inputs\")

Deze insluitingstests staan gedeelde grenzen toe. Identieke vensters leveren daarom in beide kolommen TRUE op. Als je taak insluiting vereist met ruimte aan beide kanten, vervang dan in de betreffende insluitingsformule beide niet-strikte vergelijkingen door strikte vergelijkingen. Dat is een aanvullende redactionele voorwaarde; het verandert het overlapresultaat niet.

Houd kalenderdatums, tijdstippen, offsets en tijdzones gescheiden

Bepaal wat je invoer betekent voordat je de formules toepast. Een kalenderdatum zoals 2026-11-10 benoemt een kalenderdag zonder een tijdzone op te geven. Dat is geschikt voor een publicatielabel voor de hele dag. De Temporal.PlainDate-API van TC39 modelleert dit soort datum expliciet, onafhankelijk van een tijdzone. Temporal.PlainDate.

Een tijdstip identificeert een punt op de tijdlijn. Een offset zoals +01:00 geeft op dat moment het verschil met UTC aan. Een benoemde tijdzone zoals Europe/Paris bevat regionale tijdregels. Dit zijn verschillende gegevens: een vaste offset bevat niet de veranderende regels van een benoemde tijdzone. Temporal.ZonedDateTime.

De fictieve tijdstempels 2026-11-10T10:00:00+01:00 en 2026-11-10T09:00:00Z identificeren bijvoorbeeld hetzelfde tijdstip. Als je alleen hun weergegeven uren vergelijkt, krijg je de verkeerde volgorde.

De spreadsheetformules hierboven vergelijken de waarden die je opgeeft; ze bevatten geen stap voor omzetting van een benoemde tijdzone. Zet voor getimede vensters uit verschillende tijdzones eerst elk eindpunt om naar een tijdstip en druk alle eindpunten uit in UTC. Bewaar de oorspronkelijke tijdzonegegevens apart als je het bedoelde lokale schema wilt kunnen reconstrueren.

Voor een geautomatiseerde omzetting is de gedocumenteerde API-route: maak een Temporal.ZonedDateTime met de bijbehorende tijdzone en converteer die met toInstant(). De methode compare() ervan vergelijkt exacte tijden. Als een lokale tijd tijdens een overgang in de offset wordt overgeslagen of herhaald, biedt de API expliciete opties om de ambiguïteit op te lossen, waaronder reject. Los die ambiguïteit op voordat je vergelijkbare waarden importeert. Omzetting, vergelijking en ondubbelzinnige interpretatie met Temporal.ZonedDateTime.

Houd de taak bij kalenderdatums voor vensters die hele dagen beslaan. Een fictieve publicatieperiode die 10 tot en met 12 november omvat, kan worden weergegeven als [2026-11-10, 2026-11-13). iCalendar gebruikt eveneens de dag na de laatste inbegrepen dag als exclusief eindpunt van een gebeurtenis die hele dagen beslaat. Voer deze grenzen in Numbers in met formules DATE, zodat de tijdcomponenten consistent zijn. Voorbeeld van een meerdaagse gebeurtenis in RFC 5545.

Los grensgevallen op zonder de vraag te veranderen

Bij een interval dat over middernacht loopt, moet de eindwaarde de volgende datum hebben. Een venster van 10 november om 23:00 tot 11 november om 01:00 is geldig. Als je beide eindpunten op 10 november invoert, loopt het interval achteruit. Corrigeer de datum in plaats van de waarden automatisch om te wisselen, want dat kan een invoerfout verhullen.

Als aansluitende eindpunten voor jouw specifieke taak als overlap moeten tellen, gebruik dan AND(B2<=E2,D2<=C2) in de formule in G2. Behoud de invoercontrole op positieve lengte, tenzij je afzonderlijk hebt bepaald hoe momenten zonder duur moeten werken. Leg deze wijziging van het grensbeleid vast naast de tabel.

Dat beleid is ook van belang bij het gebruik van standaard-Mac-API’s. Volgens Apple is DateInterval in Foundation een gesloten interval dat beide eindpunten omvat en een duur van nul toestaat. Het biedt intersects en intersection(with:), maar het model van gesloten intervallen wijkt af van de hier gebruikte iCalendar-conventie. Gebruik voor overlap van kalenderintervallen met een positieve duur de expliciete strikte eindpuntentest in plaats van ervan uit te gaan dat het doorsnijdingsbeleid van een API overeenkomt met je taak. DateInterval.

Controleer drie dingen voordat je op een vergelijking vertrouwt: elk eindpunt heeft de bedoelde datum- en tijdbasis, beide vensters hebben een positieve lengte en het voorbeeld met aansluitende eindpunten levert het resultaat op dat je hebt gekozen. Als deze keuzes expliciet zijn, kunnen dezelfde twee vergelijkingen gedeeltelijke overlap, volledige insluiting en identieke vensters afhandelen.

Bronnen