Methodology & Data Sources
Every time, holiday, DST, and solar figure on TimeNowHub is computed from a named source or a documented method. This page is the canonical statement of how — and where we honestly stop.
Time Data
All local-time and offset values are computed with Luxon, which reads the IANA Time Zone Database (tzdb) through the platform's bundled ICU/Intl data. Each city carries an explicit IANA zone identifier in our public dataset (/data/cities.json) — offsets are never hand-written.
tzdb rule changes (abolitions, reinstatements, date moves) reach these pages when the platform's tzdb bundle updates. We do not maintain our own copy of historical tzdb archives, so past-year rule archaeology is out of scope unless a named source covers it.
Precision. Offsets and transition instants are resolved to the minute — the practical granularity of civil time. We do not claim millisecond accuracy.
Holiday Data
Public-holiday rules live in src/data/holidays.ts. Every rule that ships on a public page carries a named legal source alongside it — for example the US Office of Personnel Management federal holiday schedule (5 U.S.C. §6103) and the UK Banking and Financial Dealings Act 1971 with the Christmas Day and Bank Holidays Order 1978.
Each country is graded by coverage level:
- complete — every gazetted holiday in the stated scope is encoded with a named source (currently GB, DE, FR, IE, CA, US, AU).
- partial — useful status hints only; the page carries a visible disclaimer and is excluded from indexing.
- unavailable — no encoded calendar.
Substitute days. Fixed holidays falling on a weekend are observed on a substitute weekday according to each country's rule (for example, next-Monday observation in the UK). Easter-based dates use the anonymous Gregorian computus algorithm.
Scope honesty. Coverage is stated per country and scope — GB is England & Wales bank holidays, US is the federal (OPM) schedule, AU is nationally uniform days. State-variable or region-specific days outside the stated scope are not encoded.
DST Transitions
Clock changes are probed, not hand-written (src/lib/dst-country.ts). For each IANA zone we read the offset at day granularity, then binary-search the first minute where the offset changes. Every row on a /dst page is derived from the IANA tzdb via this probe at request time.
Precision limits. Resolution is one minute. Transition instants are exact when the tzdb encodes them; regions with pending or unratified legislation are only reflected once the tzdb ships the change.
Sun & Moon Math
Sunrise/sunset and daylight values use the SunCalclibrary (MIT-licensed, vendored under src/lib/vendor/). City pages and the sun pages call the same wrapper over the same library, so they can never disagree. Polar edge cases (midnight sun, polar night) follow a NaN → null convention and render as absent rather than as a fabricated time.
Monthly grids sample one representative day per month at mid-month local noon, producing durable, cacheable copy with no render-time values.
Known Limitations
- Moon-sighting holidays. Dates that depend on lunar sighting (e.g. Eid) cannot be computed exactly in advance; approximate rules are flagged and never presented as fixed dates.
- Matariki. The New Zealand lunisolar holiday is currently excluded from our holiday calendar.
- Coverage scope. Holiday data reflects the stated statutory scope per country; regional or state-specific days outside it are not encoded.
- Rule-change archaeology. We do not reconstruct historical tzdb rules beyond the bundled current data; historical claims on editorial pages cite named sources.
- Device-time accuracy. Times shown are computed from server data; a user's own clock may drift independently (see the clock-check tool's error band).
Corrections
TimeNowHub is maintained by Max. If a date, offset, or source is wrong or out of date, tell us and we will correct the data and the page it renders.
[email protected]