Kennisbank
Datums en tijdzones: waarom een order op de verkeerde dag landt
Een order van 00:30 op 1 oktober staat in UTC op 30 september, 22:30. Een koppeling die het datumdeel van het tijdstip overneemt zonder om te rekenen, boekt die order in september en in het derde kwartaal.
Bijgewerkt op
Waarom een order op de verkeerde dag terechtkomt
Een tijdstip is een moment, een datum is een vak in de kalender. Welk vak bij een moment hoort, hangt af van de tijdzone. Order 10482 wordt geplaatst op 1 oktober 2026 om 00:30 Nederlandse tijd. Shopify geeft dat moment door als 2026-09-30T22:30:00Z: 22:30 in UTC, de wereldtijd zonder zomertijd.
In Business Central is de orderdatum (orderDate) een datum zonder tijd. De koppeling moet dus van het tijdstip een datum maken. Neemt hij de eerste tien tekens van de tekst, dan staat er 2026-09-30. Rekent hij eerst om naar Nederlandse tijd, dan staat er 2026-10-01. Het verschil is één dag, maar die dag valt in een andere maand, een ander kwartaal en een andere btw-periode.
Het venster waarin dit gebeurt is 2 uur per nacht in de zomer en 1 uur in de winter. Een webshop die na middernacht weinig verkoopt merkt het een tijd niet. Tot de maandafsluiting een paar orders van de eerste van de maand in de vorige maand laat zien, of de omzet per dag in het ERP niet overeenkomt met het overzicht van de webshop.
Wat systemen precies versturen
Elk systeem geeft tijden op zijn eigen manier door. Deze zijn op 3 oktober 2026 nagelezen in de documentatie van de leverancier.
| Systeem | Veld | Formaat | Tijdzone |
|---|---|---|---|
| Shopify, GraphQL Admin API | createdAt, processedAt |
2026-09-30T22:30:00Z |
UTC, aangegeven met Z |
| Shopify, REST Admin API | created_at |
2026-10-01T00:30:00+02:00 |
tijdzone van de winkel, met verschil erbij |
| WooCommerce REST API | date_created |
2026-10-01T00:30:00 |
tijdzone van de site, zonder aanduiding |
| WooCommerce REST API | date_created_gmt |
2026-09-30T22:30:00 |
GMT, zonder aanduiding |
| Business Central API v2.0 | orderDate, postingDate |
2026-10-01 |
geen tijd, alleen een datum |
| Business Central API v2.0 | lastModifiedDateTime |
2026-09-30T22:30:12Z |
UTC |
De twee WooCommerce-velden laten het risico het best zien. Beide teksten zien eruit als een gewoon tijdstip, en geen van beide zegt in welke tijdzone het staat. Dat weet je alleen uit de documentatie van WooCommerce: het ene veld staat in de tijdzone die in WordPress is ingesteld, het andere in GMT. Staat de site op UTC in plaats van Amsterdam, dan zijn beide velden gelijk en klopt geen van beide met de Nederlandse kalender.
{
"id": 10482,
"date_created": "2026-10-01T00:30:00",
"date_created_gmt": "2026-09-30T22:30:00",
"date_paid_gmt": "2026-09-30T22:31:04"
}
Shopify legt de tijdzone van de winkel vast in het veld ianaTimezone van het object Shop, bijvoorbeeld Europe/Amsterdam. Business Central bewaart een datum met tijd altijd in UTC en toont hem in de tijdzone van de gebruiker, volgens de documentatie van Microsoft. Wat je in het scherm ziet is dus niet wat de API teruggeeft.
De regel die hieruit volgt: een tijdstip reist in UTC, met de tijdzone erbij. Pas op het moment dat er een datum van gemaakt wordt, rekent de koppeling om naar de tijdzone van de administratie. Dat gebeurt op één plek, zodat niet twee stappen elk een eigen omrekening doen.
Zomertijd: het uur dat niet bestaat en het uur dat twee keer komt
Alle EU-landen gaan op de laatste zondag van maart naar zomertijd en op de laatste zondag van oktober terug, zo staat in richtlijn 2000/84/EG (Europese Commissie). In Nederland gaat de klok in 2026 op 29 maart van 02:00 naar 03:00 en op 25 oktober van 03:00 terug naar 02:00.
| Datum | Nederlandse tijd | Verschil met UTC | Gevolg |
|---|---|---|---|
| 29 maart 2026 | 02:00 tot 03:00 bestaat niet | van +01:00 naar +02:00 | een run om 02:30 heeft geen moment om te starten |
| 25 oktober 2026 | 02:00 tot 03:00 komt twee keer | van +02:00 naar +01:00 | een run om 02:30 kan twee keer starten |
| 1 oktober 2026, 00:30 | gewone zomertijd | +02:00 | 30 september, 22:30 UTC |
| 1 december 2026, 00:30 | gewone wintertijd | +01:00 | 30 november, 23:30 UTC |
Wat een planner doet met een run op 02:30 in de nacht van de wisseling, verschilt per planner: overslaan, direct uitvoeren of twee keer draaien. Een nachtelijke import die twee keer draait kan twee keer dezelfde boekingen maken als hij niet op dubbelingen controleert. Wie runs in UTC plant, heeft er geen last van.
De laatste twee regels van de tabel tonen de tweede fout: een vaste correctie. Een koppeling die bij elk UTC-tijdstip "plus één uur" optelt, zit het halve jaar een uur mis. De omrekening hoort te gaan via de naam van de tijdzone, Europe/Amsterdam, niet via een vast verschil.
Hetzelfde speelt bij het ophalen van wijzigingen. De WooCommerce REST API filtert met modified_after en leest dat tijdstip in de tijdzone van de site, tenzij dates_are_gmt=true wordt meegestuurd. Een koppeling die zijn laatste run in UTC onthoudt en het filter zonder die vlag verstuurt, vraagt in de zomer om alles van 2 uur na het echte moment. De wijzigingen uit die 2 uur komen nooit binnen.
03-04: één tekst, twee datums
In leveranciersbestanden staan datums als tekst, en de volgorde van dag en maand staat nergens bij. 03-04-2026 is in Nederland 3 april. Volgens de Amerikaanse volgorde is het 4 maart. Dat is 30 dagen verschil op een verwachte leverdatum.
| In het bestand | Nederlandse volgorde | Amerikaanse volgorde | Te herkennen? |
|---|---|---|---|
03-04-2026 |
3 april 2026 | 4 maart 2026 | nee |
13-04-2026 |
13 april 2026 | ongeldig, maand 13 | ja |
2026-04-03 |
3 april 2026 (ISO 8601) | 3 april 2026 | ja, één lezing |
46115 |
Excel-serienummer: 3 april 2026 | zelfde | alleen als je weet dat het Excel is |
Een dag boven de 12 verraadt de volgorde, maar een bestand waarin alle datums in de eerste 12 dagen van de maand vallen, zegt niets. Gokken op basis van de eerste regels werkt tot de dag dat het misgaat. De koppeling legt daarom per leverancier het formaat vast, bijvoorbeeld DD-MM-JJJJ, en stuurt elke waarde die daar niet in past naar de controlelijst. Een bestand dat iemand in Excel opent en opslaat, kan daarna ineens een ander datumformaat of serienummers bevatten. Meer daarover staat in CSV- en Excel-bestanden van leveranciers.
Weeknummers: ISO tegen Excel
Leveranciers en vervoerders noemen een leverweek vaak alleen als nummer. Er zijn twee manieren van tellen. ISO 8601 begint de week op maandag en week 1 is de week met de eerste donderdag van het jaar. De standaardinstelling van de functie WEEKNUM in Excel begint op zondag en week 1 is de week waarin 1 januari valt, zo staat in de uitleg van Microsoft bij die functie.
Rond de jaarwisseling van 2026 op 2027 lopen ze uiteen:
| Datum | Dag | ISO 8601 | Excel WEEKNUM, standaard |
|---|---|---|---|
| 27 december 2026 | zondag | week 52 van 2026 | week 53 van 2026 |
| 31 december 2026 | donderdag | week 53 van 2026 | week 53 van 2026 |
| 1 januari 2027 | vrijdag | week 53 van 2026 | week 1 van 2027 |
| 4 januari 2027 | maandag | week 1 van 2027 | week 2 van 2027 |
2026 heeft volgens ISO 53 weken, omdat 1 januari 2026 op een donderdag viel. Een leverancier die "levering week 1" schrijft, bedoelt volgens ISO de week van 4 januari 2027 en volgens Excel de dagen van 27 december tot en met 2 januari. Voor een webshop die "verwacht in week 1" toont, is dat een week verschil in wat de klant leest.
Levertijd als duur of als datum
Een levertijd van "5 werkdagen" is een duur. "Verwacht op 12 oktober" is een datum. De ene is naar de andere om te rekenen, maar alleen met een werkdagenkalender, een lijst feestdagen en het tijdstip waarop de dag sluit.
Een rekenvoorbeeld: een order op vrijdag 2 oktober 2026 om 15:00, voor een sluittijd van 16:00, telt vanaf vrijdag. 5 werkdagen later is vrijdag 9 oktober. Dezelfde order om 16:30 telt vanaf maandag 5 oktober, en 5 werkdagen later is maandag 12 oktober. Een half uur verschil bij het bestellen wordt drie kalenderdagen verschil in de leverdatum. Voor die sluittijd moet de koppeling ook weer weten in welke tijdzone 16:00 bedoeld is. De velden en de rekensom staan uitgewerkt in levertijd of leverdatum.
Wat betekent dit voor je koppeling?
Per datumveld leggen we vast in welke tijdzone het binnenkomt, in welk formaat en welke tijdzone de administratie gebruikt. Tijdstippen gaan in UTC door de koppeling en worden op één plek omgerekend naar Europe/Amsterdam als er een orderdatum of boekdatum van gemaakt wordt. Geplande runs staan in UTC. Een datum die niet in het vastgelegde formaat past, komt op de controlelijst en wordt niet geraden. In de dry run zie je vooraf welke orders van de eerste van de maand in welke periode landen.
Datums zijn een van de velden in de orderstroom, naast adressen, bedragen en statussen. Het overzicht staat op orders, klanten en verzending, met de bijbehorende rekensommen in bedragen en btw mappen en adresvelden mappen. Vertel welke systemen je gebruikt, dan hoor je welke datumvelden ze sturen en waar omgerekend moet worden.
Veelgestelde vragen
Moet een koppeling tijden in UTC of in Nederlandse tijd opslaan?
Tijdstippen in UTC, met de tijdzone erbij. Een datum zonder tijd, zoals een orderdatum of boekdatum, in de lokale tijdzone van de administratie. De omrekening gebeurt op één plek: op het moment dat een tijdstip een datum wordt.
Waarom staat de orderdatum in mijn ERP een dag eerder dan in de webshop?
De webshop levert het tijdstip in UTC en de koppeling neemt daar alleen het datumdeel van. Orders tussen 00:00 en 02:00 Nederlandse zomertijd, of tussen 00:00 en 01:00 in de winter, schuiven dan een dag terug. De oplossing is omrekenen naar Europe/Amsterdam voordat de datum wordt afgeleid.
Wat gebeurt er met een geplande run tijdens de wisseling naar zomertijd?
Op de laatste zondag van maart bestaat 02:30 Nederlandse tijd niet, op de laatste zondag van oktober komt het twee keer. Een run op dat tijdstip wordt afhankelijk van de planner overgeslagen, direct uitgevoerd of dubbel gedraaid. Plan runs daarom in UTC of buiten het uur tussen 02:00 en 03:00.
Hoe weet een koppeling of 03-04-2026 3 april of 4 maart is?
Uit de tekst zelf niet. Het formaat wordt per bron vastgelegd, bijvoorbeeld DD-MM-JJJJ voor een Nederlandse leverancier. Een waarde die niet past, zoals 13 als maand, gaat naar de controlelijst in plaats van stil een andere datum te worden.
Welk weeknummer is 1 januari 2027?
Volgens ISO 8601 week 53 van 2026, want de eerste donderdag van 2027 valt op 7 januari. Volgens de standaardinstelling van WEEKNUM in Excel week 1 van 2027. Een leverweek uit een leveranciersbestand wordt daarom altijd samen met het systeem van nummeren vastgelegd.
Vertel wat je nodig hebt
Vertel welke systemen je gebruikt en wat je wilt verbeteren. Je krijgt binnen één werkdag een persoonlijk antwoord. We helpen je de werkzaamheden helder te krijgen en spreken de prijs en planning af voordat je iets toezegt.
- Je weet de prijs en de doorlooptijd voordat je iets toezegt
- Wij zoeken uit welke koppeling het werk uit handen neemt
- Wij verzorgen de bouw, hosting, bewaking en het onderhoud
- Je team krijgt minder overtypwerk en minder uitzoekwerk