Cron Job Wrong Timezone — Fix Schedule Offset
💡Cron uses the system timezone, which is usually UTC on servers. If your job runs at the wrong time, either convert your schedule to UTC manually or set CRON_TZ at the top of your crontab. Avoid local time schedules in regions with daylight saving time — use UTC for predictable, year-round behavior.
Quick Diagnosis
If you see “cron job runs 1–5 hours off from expected time” → it means cron uses the system timezone (often UTC) while you scheduled in local time → do this: check the system timezone with timedatectl, then convert your schedule to system time or set CRON_TZ
If you see “job runs correctly in summer but wrong in winter” → it means daylight saving time shift is not accounted for in the schedule → do this: use UTC-based schedules to avoid DST shifts, or set CRON_TZ to a DST-aware zone
If you see “cron job runs twice in one hour” → it means clocks moved backward for DST and the cron time falls in the repeated hour → do this: avoid scheduling at the DST transition time, or use UTC which has no DST
Fixes with Examples
Setting CRON_TZ for local timezone
❌ Wrong
# Job intended for 9am New York — but system is UTC
0 9 * * * /usr/local/bin/report.sh
# → actually runs at 9am UTC = 5am EST✅ Fixed
# Set CRON_TZ so cron interprets times in New York timezone
CRON_TZ=America/New_York
0 9 * * * /usr/local/bin/report.sh
# → runs at 9am New York timeCRON_TZ tells cron to interpret the schedule in a specific timezone. Set it at the top of the crontab or per-job.
Converting local time to UTC for the schedule
❌ Wrong
# Want 14:00 London BST (UTC+1 in summer)
0 14 * * * /script.sh
# → runs at 14:00 UTC = 15:00 BST — one hour late✅ Fixed
# Convert to UTC: 14:00 BST = 13:00 UTC
0 13 * * * /script.sh
# → runs at 13:00 UTC = 14:00 BSTCalculate the UTC equivalent of your target local time. Remember to update the schedule when DST changes.
Build and Test Your Cron Schedule
Enter your schedule and see the next 10 run times in UTC and your local timezone — before adding it to crontab.
Quick Reference: Common Timezone Offsets
America/New_YorkUTC-5 (EST)UTC-4 (EDT)America/Los_AngelesUTC-8 (PST)UTC-7 (PDT)Europe/LondonUTC+0 (GMT)UTC+1 (BST)Europe/BerlinUTC+1 (CET)UTC+2 (CEST)Asia/TokyoUTC+9 (no DST)UTC+9Related Guides
Frequently Asked Questions
What timezone does cron use?
Cron uses the system timezone by default. On most servers this is UTC. You can check with timedatectl or date +%Z. Use CRON_TZ to override for specific jobs.
How do I set a cron job timezone in Linux?
Add CRON_TZ=America/New_York at the top of your crontab (crontab -e) before the jobs that should use that timezone. Not all cron implementations support this — check your man crontab.
Should I use UTC or local time for cron jobs?
UTC is safer. It never changes for daylight saving time, so your jobs run at a consistent real-world offset. Local time schedules need updating twice a year in DST regions.
All tools run in your browser. Your data never leaves your device.