Cron · System local time, usually /etc/localtime

Cron and time zones

Cron schedules run in the system's local time zone unless the implementation offers CRON_TZ or TZ support.

Key facts

Default zoneSystem local time, usually /etc/localtime
Container defaultOften UTC
CRON_TZSupported by Vixie cron and cronie
TZ variableAccepted by some implementations, not all
Spring DSTSkipped local times do not fire
Fall backRepeated local times may fire twice depending on implementation
Verification<code>date</code> in the same environment as the daemon

The daemon's clock, not yours

Cron reads the system time zone. A job written as 0 9 * * * fires at 09:00 where the server thinks it is, which may be UTC while the team is in another zone. Containers inherit UTC unless a time zone is mounted or TZ is set, so moving a crontab into a container can shift every run by hours.

The reliable check is to run date inside the same environment that runs the daemon, and to log the local timestamp at the start of the job. Both are cheap and settle the question immediately.

Daylight saving

At a spring-forward transition, local times in the skipped hour never occur, so a job scheduled inside that hour does not run that day. At a fall-back transition the hour repeats, and implementations differ on whether the job runs once or twice. Jobs that must run exactly once per day should either run in UTC or guard against a duplicate run inside the command.

CRON_TZ, where available, pins a schedule to a named zone, but it does not remove DST effects — it only changes which zone's DST rules apply. UTC is the only zone without transitions.

Frequently asked questions

What time zone does cron use?

The system's local time zone. In many containers that is UTC, even when developers work in another zone.

What happens to a job scheduled in a skipped DST hour?

The local time does not exist that day, so the job does not run. Schedule critical jobs in UTC or outside the transition window.

Can a cron job run twice when clocks go back?

It can, because the local hour repeats. Behaviour varies by implementation, so make important jobs idempotent.

New tools, straight to your inbox

One short email when we add tools worth using. No spam, unsubscribe anytime.