Candid Tools

Cron daily at 2 AM (and the daylight saving catch)

Daily at 2 AM in cron is 0 2 * * * (Unix) or 0 0 2 * * ? (Quartz, Spring), the hour DST can skip or repeat; next runs are calculated in your browser.

Unix cron (crontab, GitHub Actions, Kubernetes)
  • 0 2 * * *
Quartz and Spring (seconds first; valid in both)
  • 0 0 2 * * ?
AWS EventBridge (minute first, year last)
  • cron(0 2 * * ? *)

Read by our parser as: At 2:00 AM, every day. Open in the cron checker

Next 10 runs

Calculating in your browser...

  1. 1 
  2. 2 
  3. 3 

At a glance

Accepts
Nothing to enter - the schedule is preset on the page
Outputs
The expression in Unix, Quartz/Spring and AWS form, plus its next 10 run times
Where it runs
Entirely in your browser, on your device
What leaves your device
Nothing - what you type stays in this tab
Limits
Run times use your browser's timezone or UTC; real schedulers can start a run late
Account
Not required - there is no sign-up
Price
Free, with no watermark and no usage cap
Made by
Visrut

What it means

0 2 * * * runs once a day at 2:00 AM: minute 0, hour 2. It's a popular slot for backups because nobody is using the system. It's also the slot most likely to misbehave twice a year, because in the US, the EU and many other places daylight saving time changes happen between 1 AM and 3 AM local time.

When this is the right schedule

Use it when the scheduler runs in UTC (no DST), or you've checked how your scheduler treats skipped and repeated times and you're fine with it.

When to pick something else

Look elsewhere when the schedule uses a local timezone with DST and a missed or doubled run would hurt (a billing job, a one-a-day email). Move it to 4 AM or run it in UTC.

Things to watch

What each scheduler does on the switch nights

cronie's cron(8) says jobs in a skipped hour run right after the change and a repeated hour doesn't run them twice. AWS EventBridge Scheduler skips a time that doesn't exist and runs once in a repeated hour. GitHub Actions with a DST timezone advances a skipped time to the next valid time (its example: 2:30 runs at 3:00). Quartz's docs just warn that times around 2 AM "can cause skips or repeats".

2:00 exactly is a special case

In the US, clocks jump from 2:00 straight to 3:00, so 2:00 to 2:59 doesn't exist that night. In the EU the change is at 01:00 UTC, which is 2:00 local in Central Europe. The run list here skips times that don't exist in your timezone, so you can see it happen by checking March dates.

Run it in UTC instead

UTC has no DST. On a Linux box with cronie, CRON_TZ=UTC at the top of the crontab makes its times UTC. Kubernetes has .spec.timeZone: "Etc/UTC", and GitHub Actions is UTC by default.

Frequently asked questions

Will my 2 AM cron job run on the night the clocks go forward?

It depends on the scheduler. cronie runs it right after the change, GitHub Actions moves it to the next valid time, and AWS EventBridge Scheduler skips it. In UTC the question never comes up.

Will it run twice when the clocks go back?

Not on cronie or AWS EventBridge Scheduler, which both document running once. Other schedulers vary, so make the job safe to run twice if it matters.