crontool
Paste a schedule, read it in English, see the next runs.

Cron Runs in the Wrong Timezone: How to Fix It

By default cron uses the system's local timezone, so a job scheduled for 09:00 fires at the server's 09:00 — which may not be yours. On Vixie cron (Debian, Ubuntu, RHEL) you can override it per crontab by adding a CRON_TZ=Area/City line above the job. Otherwise, fix the system zone with timedatectl.

Per-job override (Vixie cron)

Add a CRON_TZ line before the jobs it should apply to:

CRON_TZ=America/New_York
0 9 * * * /home/me/report.sh

Now the job runs at 09:00 New York time regardless of the server's zone. The variable affects every line below it in the same crontab.

Change the system timezone

If everything should use one zone, set it globally: sudo timedatectl set-timezone America/New_York, then restart cron. Check the current zone with timedatectl.

Watch out for DST

Around daylight-saving changes, jobs scheduled in the skipped or repeated hour may run twice or not at all. For critical jobs, schedule them outside 01:00–03:00 local time.

If CRON_TZ is ignored

Not all cron flavors support CRON_TZ (it is a Vixie/cronie feature). If yours does not, either change the system zone or convert your desired time to the server's zone by hand.

FAQ

What timezone does cron use by default?

Cron uses the system's local timezone. Check it with timedatectl; a job's time is interpreted in that zone.

How do I run a cron job in a specific timezone?

On Vixie/cronie cron add CRON_TZ=Area/City (e.g. CRON_TZ=America/New_York) on a line above the job in the crontab. It applies to all following lines.

Why did my cron job run at the wrong hour after a clock change?

Daylight-saving transitions can make jobs in the skipped or repeated hour run twice or not at all. Schedule critical jobs outside 01:00–03:00 local time.