Free tools

Cron time zone converter

Your schedule says 09:00 in Berlin, but the server runs on UTC. Convert a cron expression between time zones and see when daylight saving changes the answer.

Every weekday at 09:00

In UTC

The converted expression shows up here when JavaScript is on.

Runs in your browser. Nothing you type here is sent to a server.

Or keep your own time zone

Delay runs each cron in the time zone you choose, with daylight saving handled, so 09:00 stays 09:00 in March and October without editing anything. It calls your URL, keeps every response, and alerts your team when runs fail. Free for 1,000 requests a month.

Why the answer changes during the year

Cron reads its schedule in the time zone of the machine it runs on, and most servers, containers and hosted schedulers run on UTC. To run a job at 09:00 in Berlin, you write the UTC time that matches 09:00 there.

That time isn't fixed. Berlin is one hour ahead of UTC in winter and two in summer, so 09:00 in Berlin is 0 8 * * * in UTC from late October to late March, and 0 7 * * * the rest of the year. A crontab with one of them runs an hour off for half the year unless someone edits it on both dates.

When times cross midnight

Moving a time across midnight moves the day too. 00:30 on Monday in Tokyo is 15:30 on Sunday in UTC, so the weekday field changes from 1 to 0. Dates move the same way: midnight on the 1st in Berlin is the last day of the previous month in UTC, which cron writes as L.

Some schedules can't be moved exactly. A run on the 31st that crosses into the next day lands on the 1st in months with 31 days and nowhere in the others, and a schedule limited to some months spills into the neighbouring month at the edges. The converter says so when that happens.

Skip the conversion

The other way out is a scheduler that reads the schedule in your time zone. Kubernetes CronJobs take a timeZone field, and Delay lets you pick a time zone per cron, so 0 9 * * 1-5 in Europe/Berlin stays at 09:00 all year.

Questions

How do I convert a cron expression to UTC?

Subtract your time zone's offset from the hour, and move the day fields if the time crosses midnight. If your zone has daylight saving, the offset changes twice a year, so you need two expressions and the dates to switch. The converter does both and lists the dates.

Why does my cron job run an hour late?

Usually because the expression was converted to UTC in one season and daylight saving has started or ended since. 09:00 in New York is 13:00 UTC in summer and 14:00 UTC in winter. Convert again for the current period, or run the job somewhere that understands time zones.

Can one cron expression cover both summer and winter time?

Not in UTC, unless the job can run at either hour. Some teams schedule both hours and have the job check the local time and skip one of them. Simpler: run it in a scheduler that takes a time zone.

What about time zones with half-hour offsets?

They work the same way, the minute field moves as well. 09:00 in India (UTC+5:30) is 03:30 UTC, so 0 9 * * * becomes 30 3 * * *. When a schedule has several minutes, the result can need more than one line.

Which time zone do hosted cron services use?

Most read schedules in UTC unless you set a zone, and some can't be set at all. Check your platform's docs. If it runs on UTC, set the target zone here to UTC to get the expression to use there.

Schedule your first cron job

Free for 1,000 requests a month. No credit card.

Read the docs