Als je de tijdzone van de bezoeker in de browser nodig hebt, geeft JavaScript die in één regel. Deze gids behandelt de moderne one-liner, de oudere getTimezoneOffset-aanpak en wanneer je welke gebruikt, hoe je de UTC-tijd ophaalt, hoe je een datum in elke tijdzone opmaakt, de randgevallen waarop mensen struikelen, en waarom de browsertijdzone ook een nuttig fraude- en device fingerprinting-signaal is.
Samenvatting: de browsertijdzone ophalen in JavaScript
- De moderne manier:
Intl.DateTimeFormat().resolvedOptions().timeZonegeeft de IANA-naam terug (bijvoorbeeldAmerica/New_York). Het werkt in elke huidige browser en heeft geen bibliotheek nodig. new Date().getTimezoneOffset()geeft de offset ten opzichte van UTC in minuten terug, maar het teken is omgekeerd en het verandert met de zomertijd, dus geef de voorkeur aan de IANA-naam voor opslag.- De gerapporteerde tijdzone kan worden vervalst, dus fraude- en botdetectiesystemen behandelen hem als één signaal tussen vele, vergeleken met IP-geolocatie en de TLS-fingerprint.
Hoe krijg je de browsertijdzone in JavaScript (de one-liner)
De moderne, betrouwbare manier om de tijdzone van de browser uit te lezen is de Intl-API:
const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
// "America/New_York", "Europe/London", "Asia/Tokyo", ...
Intl.DateTimeFormat().resolvedOptions() geeft de locale- en opmaakopties terug die de browser voor de huidige omgeving heeft bepaald, en de eigenschap timeZone is de IANA-tijdzonenaam. Dit is de waarde die je bijna altijd wilt: hij is stabiel, leesbaar voor mensen en onafhankelijk van de huidige zomertijdoffset. Hij wordt ondersteund in elke moderne browser (Chrome, Firefox, Safari, Edge).
Hoe krijg je de UTC-offset met getTimezoneOffset()
Voordat Intl breed werd ondersteund, was de gangbare aanpak Date.prototype.getTimezoneOffset():
const offsetMinutes = new Date().getTimezoneOffset();
// New York in summer (EDT, UTC-4): 240
// London in winter (GMT, UTC+0): 0
Twee dingen verrassen mensen hier. Ten eerste is het teken omgekeerd: een zone die achterloopt op UTC geeft een positief getal terug. getTimezoneOffset geeft de minuten terug die je bij de lokale tijd optelt om UTC te bereiken, dus UTC-4 is 240, niet -240. Ten tweede is de offset niet de tijdzone. Hij verandert tweemaal per jaar met de zomertijd, en meerdere verschillende zones delen dezelfde offset, dus je kunt de IANA-naam er niet uit herleiden. Gebruik de offset voor snel UTC-rekenwerk; gebruik de IANA-naam om de zone te identificeren of op te slaan.
Nu de basis is behandeld, gaan de volgende twee secties over de UTC-tijd en opmaak in een specifieke zone, en daarna komen we bij waarom deze waarde belangrijk is voor fraudedetectie.
Hoe krijg je de huidige UTC-tijd in JavaScript
UTC is onafhankelijk van de tijdzone van de bezoeker, en daarom is het het juiste formaat om naar een server te sturen of in een database op te slaan:
const now = new Date();
now.toISOString(); // "2026-07-27T14:03:00.000Z" (always UTC)
now.getTime(); // epoch milliseconds, UTC-based
Date.now(); // epoch milliseconds, shorthand
toISOString() geeft altijd UTC terug (de afsluitende Z), ongeacht waar de gebruiker zich bevindt. Sla tijdstempels op in UTC en converteer ze alleen voor weergave naar de zone van de gebruiker.
Een datum opmaken in een specifieke tijdzone
Om een datum in een gekozen zone te tonen, geef je timeZone door aan Intl.DateTimeFormat:
new Intl.DateTimeFormat("en-US", {
timeZone: "America/New_York",
dateStyle: "medium",
timeStyle: "short",
}).format(new Date());
// "Jul 27, 2026, 10:03 AM"
Dit converteert en formatteert in één stap en verwerkt de zomertijd automatisch voor de genoemde zone. Voor dit veelvoorkomende geval is geen datumbibliotheek nodig.
Randgevallen: zomertijd, oudere browsers en vervalste tijdzones
Een paar zaken om in gedachten te houden voordat je op de waarde vertrouwt:
- Zomertijd. De offset verandert door het jaar heen. Sla altijd de IANA-naam op, geen vaste offset, en laat het platform de offset voor een gegeven datum bepalen.
- Zeer oude omgevingen. In verouderde browsers waar
Intlniet beschikbaar is, kanresolvedOptions().timeZoneundefinedzijn. Val terug opgetTimezoneOffset()voor een ruwe offset, of detecteer de functie en degradeer netjes. - De waarde kan worden gewijzigd. De tijdzone die JavaScript rapporteert komt van het besturingssysteem en de browser, en een gebruiker kan die wijzigen. Anti-detectiebrowsers en automatiseringsframeworks kunnen hem volledig overschrijven.
Dat laatste punt is waar dit overgaat van een opmaakdetail naar een beveiligingssignaal.
Waarom de browsertijdzone een fraude- en fingerprintingsignaal is
De tijdzone is een van de signalen die meegaan in device fingerprinting. Op zichzelf is hij laag-entropisch, maar hij wordt krachtig in combinatie met, en in tegenspraak met, andere signalen:
- Tijdzone versus IP-geolocatie. Als het IP van de verbinding naar het ene land geolocaliseert maar de browser een tijdzone aan de andere kant van de wereld rapporteert, is die mismatch een klassiek teken van een VPN, proxy of een bot die op gehuurde infrastructuur draait. Dit is een kerninput voor impossible travel-detectie en VPN-detectie.
- Tijdzone versus taal en TLS. Een consistent menselijk profiel heeft een samenhangende set signalen. Een gerapporteerde
Europe/London-zone gekoppeld aan een locale en een TLS-fingerprint die niet passen, is het soort tegenspraak dat geautomatiseerde fraude produceert. - Een vervalste waarde is zelf een signaal. Wanneer de aan JavaScript gerapporteerde tijdzone niet overeenkomt met andere tijdmetingen, wijst die inconsistentie op een anti-detectiebrowser in plaats van een echte gebruiker.
Daarom verraadt een gestolen inloggegeven die vanaf de machine van een aanvaller wordt gebruikt, of een AI-agent die een headless browser aanstuurt, zich vaak bij de tijdzone: de waarde spreekt óf het netwerk tegen óf is te schoon om echt te zijn. cside leest de browsertijdzone naast meer dan 100 andere signalen om precies deze mismatches te vangen, en voedt in realtime beslissingen over accountovername en botdetectie.








