{
  "id": 4388353,
  "title": "Availability slots across timezones and DST",
  "url": "https://urgent.news/2026/08/30/availability-slots-across-timezones-and-dst",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-08-30T08:49:50.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/kensaadi/availability-slots-across-timezones-and-dst-1e5h"
  },
  "original_language": "en",
  "account": "Availability slots across timezones and daylight saving time (DST) can be tricky to implement correctly. The problem arises when a wall-clock time is treated as a fixed point in time, rather than a location-specific instant.\n\nTo resolve this issue, an availability engine should build each boundary as a wall-clock instant in the business's timezone, resolve the offset there, and only then convert to UTC. This ensures that the same time slot maps to the correct instant, regardless of the date or timezone.\n\nFor example, 09:00 in Paris during summer (UTC+2) maps to 07:00 UTC, while in winter (UTC+1) it maps to 08:00 UTC. The same 09:00 string represents two different instants depending on the date. Therefore, the rule to ensure correctness is to build the window in the business's timezone, resolve the offset there, and only then convert to UTC.\n\nThe common mistake is to compute slots in UTC (or the server's clock) instead. This leads to an hour being off across timezones, and phantom slots appearing during DST changes. Building the slots in the business's timezone prevents these issues, as the date library will automatically resolve the offset for that specific date and location.\n\nWhen performing overlap checks between time intervals, store the slots as UTC instants and compare them using a half-open interval overlap on milliseconds. This ensures the comparison is location-independent and eliminates any timezone-related errors.\n\nFollowing this rule will prevent the headache of availability engines working fine during regular weeks but growing phantom slots on DST change Sundays. The key takeaway is that a 09:00 time is wall-clock time in the business's timezone, not a fixed instant, and should be handled appropriately to avoid time-related bugs.",
  "summary": "TL;DR: 09:00 is wall-clock time in a timezone, not a UTC instant. Resolve the offset in the business's zone and convert to UTC last, or you're an hour off across zones and grow a phantom slot on the DST change. source → https://dashforge-ui.com/guides/availability-slots-timezones-dst An availability engine looks trivial until it ships. It works on your machine, in your timezone, on an ordinary…",
  "key_points": [
    "Availability slots must be built in business's timezone to avoid DST issues.",
    "Convert to UTC only after resolving offset in business's timezone.",
    "Store slots as UTC instants and compare using half-open interval overlap."
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}