BV
All tools
developer

Cron Timezone Converter

Convert a cron expression between timezones and see the next run times in both. Handles daylight saving properly, so a schedule set in London does not silently drift by an hour on a UTC server.

Muhammad Bilal
Muhammad Bilal Virk
4 min read
Cron timezone converter
London
UTC+01:00
UTC
UTC+00:00
Shift
-1h 0m
Same moment, expressed in UTC
30 8 * * 1-5
Runs at 09:30 on 1-5.
Offsets shown are for today. Britain and most of Europe move by an hour twice a year and the United States switches on different dates, so a fixed UTC expression drifts relative to local business hours for a few weeks each spring and autumn. Where your platform lets you set a timezone on the schedule itself — n8n's Schedule Trigger and GitHub Actions both do, cron on a bare server does not — use that rather than converting by hand.

Servers run on UTC. People think in local time. Paste a cron expression, pick the timezone you meant and the timezone the server uses, and this tool shows you the converted expression plus the next run times in both — including what happens when daylight saving moves.

What this tool does

You write 0 9 * * 1-5 meaning nine in the morning on weekdays. Your server is on UTC, you are in London, and for seven months of the year that job actually fires at ten. Nobody notices until a client asks why the morning report arrives at lunchtime.

This tool takes a cron expression, the timezone you meant it in, and the timezone the scheduler actually runs in, then converts the hour and — where the shift crosses midnight — the day-of-week field too. It also lists the next several fire times in both zones, computed with real IANA timezone data rather than a fixed offset, so you can see exactly where daylight saving breaks the assumption.

A worked example

Take 30 8 * * 1-5, meant as 08:30 Europe/London, running on a UTC scheduler.

In winter London is UTC+0, so the expression is already correct. In summer it is UTC+1, so the same job needs 30 7 * * 1-5 to fire at 08:30 local. The tool shows both, flags that no single fixed cron expression satisfies both halves of the year, and tells you the honest answer: set the scheduler's timezone rather than converting the expression.

Cross midnight and it gets worse. 0 23 * * 5 in New York is 0 4 * * 6 in UTC — the day-of-week field has to move too, which is the conversion people forget.

How to use it

  1. Paste the cron expression, in standard five-field form.
  2. Choose the timezone you wrote it for.
  3. Choose the timezone your scheduler runs in.
  4. Read the converted expression and check the next run times listed underneath.

What the fields mean

Position Field Range
1 Minute 0–59
2 Hour 0–23
3 Day of month 1–31
4 Month 1–12
5 Day of week 0–6, Sunday is 0

Where people go wrong

Converting the expression instead of setting the timezone. If your scheduler supports a timezone setting — n8n's Schedule Trigger does, so do cron implementations on most managed platforms — use it. A converted expression is correct for exactly one half of the year in any zone that observes daylight saving.

Forgetting the day-of-week shift. An hour conversion that crosses midnight changes the day. 0 1 * * 1 in Sydney is not Monday anywhere west of it.

Assuming a fixed offset. "London is UTC+1" is true from late March to late October and false the rest of the time. Offsets belong to instants, not to zones, which is why this tool uses the browser's own Intl.DateTimeFormat.formatToParts to resolve the offset at each candidate fire time rather than once at the start.

Scheduling inside the DST gap. A job set for 02:30 local simply does not run on the spring-forward day in most zones, because 02:30 does not exist. On the autumn transition it may run twice. Anything financial or billing-related should be moved out of the 01:00–03:00 window entirely.

FAQ

Does it handle daylight saving?

Yes, in the sense that it tells you the truth about it. The next-run list is computed against real timezone rules, so you can see the drift. It cannot invent a single expression that is correct year-round, because none exists — that is a scheduler configuration problem, not an arithmetic one.

Which timezone names does it accept?

IANA zone identifiers such as Europe/London, America/New_York and Asia/Karachi. These are the canonical names maintained in the IANA Time Zone Database, and they are what every serious scheduler expects.

Does it support six-field cron with seconds?

The converter works on the standard five-field form described in the cron reference. If your platform prepends a seconds field, drop it, convert, then put it back — the seconds field is never affected by a timezone shift.

What about @daily and the other shorthands?

Expand them first. @daily is 0 0 * * *, @hourly is 0 * * * *, @weekly is 0 0 * * 0. Shorthands are not timezone-aware in any implementation.

Why do the next run times differ from my server's?

Usually because the server's own timezone is not what you think it is. Check it before assuming the expression is wrong.

Next steps

To build the expression in the first place, use the Cron Expression Generator. If you are scheduling n8n workflows, How to Build an n8n Workflow covers the Schedule Trigger, and n8n Self-Hosted Setup covers setting the instance timezone so you never have to convert by hand again.

Schedules firing at the wrong hour across a client's estate? Book a discovery call.

Muhammad Bilal
Muhammad Bilal Virk
AI automation engineer — building agents, workflows, and RPA that remove repetitive work.
Share
Newsletter

One email, when I ship something worth reading.

No cadence, no filler. Unsubscribe any time.

Free consultation

Want this built against your real numbers?

A 30-minute call to scope the workflow, agent, or automation you actually need.

Book a free consultation

More developer tools

All tools
Next step

Have a workflow that's burning hours every week?

Bring me one real bottleneck. I'll tell you whether it's worth automating, and what it would take.

Book 30 Minutes Call