Cron and daylight saving time: ship schedules that do not surprise you

DST is where “works on my machine” cron setups go to die. Use this guide when timing matters for UK/Europe workflows and global systems.

What can go wrong

  • A local-time run disappears when clocks jump forward (spring).
  • A run can execute twice when clocks move back (autumn).
  • “9:00 UK” drifts if you hard-code UTC and forget BST/GMT changes.

Pick one scheduling intent (do not mix)

  1. Fixed UTC intent: expression stays constant in UTC year-round. Best for pipelines and infrastructure jobs.
  2. Fixed local wall-clock intent: always run at local time (for example 09:00 Europe/London), including DST shifts.

DST-safe pre-deploy checklist

  1. Write down timezone intent (UTC or specific IANA zone like Europe/London).
  2. Preview next runs in scheduler timezone and in local business timezone.
  3. Check at least one known DST transition week.
  4. Record expected timestamps in issue notes/on-call docs.
  5. After deploy, verify scheduler-reported next run matches expectation.
Validate in Cron tool