Skip to main content

Dates & Timezone

This page explains what "today" and "now" mean inside a rule, and what happens at a daylight-saving transition.

The declared timezone

The timezone is declared on the ruleset itself, defaulting to UTC — never a tenant-level setting, because a result must not depend on mutable configuration that lives outside the document being evaluated. NOW, TODAY, START_OF_DAY, END_OF_DAY, YEAR/MONTH/DAY and DIFF_DAYS all resolve in it, so a German customer's "today" is Europe/Berlin and the ruleset says so, and a replay of the same ruleset cannot silently drift onto a different zone. NOW/TODAY are always supplied by the caller through the evaluation's own present-instant option — never read from the host clock directly — so a golden fixture and a replay are exactly reproducible.

A local wall-clock time a daylight-saving transition either deletes or repeats is disambiguated by one named, ratified rule (plan 02-09's Task 0, option-b): a local time that a transition skips (a spring-forward gap) is shifted forward by the length of the jump, and the run succeeds rather than failing on this account; a local time that a transition repeats (an autumn-fallback fold) resolves to the earlier of its two valid instants. Either way the shift is reported as a non-blocking notice on the run's trace (EXPR_LOCAL_TIME_NONEXISTENT, at warning severity) — never silent.