Daylight-Saving Gaps, Repeated Times, and Timezone Conversions
Understand nonexistent spring-forward times, repeated fall-back times, date-specific offsets, and how iLoveTimers resolves timezone input.
Why can a local time be nonexistent or occur twice during a timezone conversion?
Short answer: a named timezone is a set of date-specific civil-time rules, not one permanent UTC offset. When clocks move forward, some local wall times never occur. When clocks move backward, some wall times occur twice with different offsets. A converter must detect that missing or duplicate mapping instead of assuming one answer always exists.
iLoveTimers resolves the entered source date and time against the browser's IANA timezone data. It reports a nonexistent spring-forward time as invalid and, for a repeated fall-back time, exposes the ambiguity and chooses the earlier matching instant for the conversion preview.
An instant and a wall time are not the same thing
An instant is one point on the UTC timeline. A wall time is a set of calendar and clock fields such as 2026-11-01 at 01:30 in America/New_York. To turn those fields into an instant, software needs the timezone's offset on that specific date. Near an offset transition, the mapping stops being one-to-one.
Converting an existing Unix timestamp is simpler because the instant is already known. Formatting it in a named timezone yields one local representation for that instant. The hard direction is taking local fields plus a zone and deciding which instant they meant.
Spring-forward gaps: a local time that never happened
In many locations, a spring transition advances the clock by one hour. A clock can jump from 01:59:59 to 03:00:00. Local times from 02:00 through 02:59:59 are skipped on that date. Entering 02:30 does not name a real instant in that zone, even though 02:30 is valid on ordinary dates.
Some programming environments silently move a skipped time forward or backward. That can conceal a scheduling mistake. The iLoveTimers timezone converter's wall-time resolver instead looks for an instant that formats back to every requested field. If it finds no match, the status is nonexistent and the interface asks for another local time.
Fall-back repeats: one wall time, two instants
When clocks move backward, part of the local clock repeats. A time such as 01:30 can first occur under the earlier daylight offset and then occur again under the later standard offset. The two instants are often one hour apart even though their local date, hour, and minute labels are identical.
The production resolver probes the browser-supported zone around the requested wall time, gathers candidate offsets, converts each candidate back through Intl.DateTimeFormat, and keeps exact field matches. Two matches produce an ambiguous status. The current converter sorts the matches and uses the earlier instant while showing a warning that the local time occurs twice. This policy is explicit; another calendar system may choose the later occurrence.
Why a city name is better than a fixed offset for future plans
America/New_York carries date-dependent transition rules. A fixed offset such as UTC-05:00 does not become UTC-04:00 in summer. For a meeting scheduled months ahead, storing only the current numeric offset can produce the wrong local hour after a transition.
The timezone meeting planner calculates each selected city's display for the chosen date. The timezone converter likewise uses the selected source date when resolving the source wall time and formatting destinations. This is why changing only the date can change the displayed offset difference.
Timezone abbreviations are display labels, not identifiers
Abbreviations such as CST, IST, and BST can refer to different regions or meanings. A short label also does not preserve the transition rules needed for a future date. iLoveTimers uses browser-supported IANA names such as America/Chicago, Asia/Kolkata, andEurope/London as the actual selection. An abbreviation may appear in formatted output for readability, but it is not the source zone identifier.
What browser timezone data can and cannot guarantee
- ECMA-402 requires time-zone-aware JavaScript implementations to use IANA timezone data for named identifiers.
- IANA data changes when governments change civil-time rules, and browsers or operating systems may ship different database versions.
- Historical coverage and localized display names can vary across implementations.
- A timezone converter cannot determine which repeated occurrence a person intended unless the user or application supplies a policy or offset.
- A correct timezone conversion does not correct an inaccurate device clock when the input is “now.”
A practical conversion checklist
- Select a named IANA timezone, not only a short abbreviation.
- Include the date because offsets can change during the year.
- Check whether the source local time is marked nonexistent or repeated.
- For a repeated time, confirm whether the earlier or later occurrence is intended.
- Recheck important future events after civil-time rules or device timezone data have been updated.
- Include an explicit UTC offset or UTC instant when handing an ambiguous appointment to another system.
Sources and further reading
These external references support the browser and standards behavior described above. iLoveTimers implementation details are identified separately in the guide.
- ECMAScript Internationalization API specification: requires time-zone-aware implementations to use IANA time zone identifiers and data, while noting that data can vary and is updated over time
- IANA Time Zone Database: is the source database for named zones and their historical and current civil-time rules
- TC39 Temporal documentation: time zones and ambiguity: illustrates repeated fall-back times and skipped spring-forward times and explains why local wall time may map to two instants or none
Related iLoveTimers guides
- Unix Timestamps in Seconds, Milliseconds, and Microseconds
- How Browser Timers Measure Elapsed Time and Handle Delays
Read how these explanations are checked on How iLoveTimers Is Made, or report a problem through the contact page.