GrepBoardTools GrepBoard manuals ↗ Log ↗

Tools / Time & date

cron · systemd OnCalendar explainer

Type a crontab schedule (*/15 * * * *, @daily) or a systemd OnCalendar= value (Mon..Fri 09:00). The result updates as you type.

What you type is calculated only in your browser and is not sent to a server.

Examples
· From now

Meaning

Every 15 minutes.

Convert

As a systemd timer
OnCalendar=*-*-* *:00/15:00

What it does

  • For crontab it follows Ubuntu 24.04's cron (Vixie cron 3.0pl1): 5 fields, names like mon and jan, ranges 1-5, lists 1,15, steps */15 and 10-50/20, and the shortcuts @daily, @weekly and friends.
  • For systemd it is a port of systemd 255's calendar code, so the normalized form is the same text systemd-analyze calendar prints, and the next run times follow the same rules — including ~ (from the end of the month), .. ranges, / repeats, fractional seconds and a time zone at the end.
  • Next run times are computed in the browser for the time zone you pick: your browser's zone, UTC or Asia/Seoul.

Examples

ExpressionKindMeaning
*/15 * * * *cronEvery 15 minutes
30 4 * * *cronEvery day at 04:30
0 9 * * 1-5cronAt 09:00, Monday through Friday
0 0 1 * 1cronOn the 1st of the month or on any Monday (OR)
Mon..Fri 09:00systemdMon..Fri *-*-* 09:00:00
*:0/15systemd*-*-* *:00/15:00 — every 15 minutes
*-*~01 23:00systemdLast day of every month at 23:00
Sun *-*-1..7 3:00systemdFirst Sunday of the month at 03:00 (AND)

How the check was made

Before release the systemd results were compared with systemd-analyze calendar --iterations=5 (systemd 255) for 77 expressions, and the cron results with the Python library croniter plus a separate brute-force checker for 66 expressions, all in Asia/Seoul. Differences between cron implementations are flagged on the page instead of hidden.

FAQ

Why does 0 0 1 * 1 run on Mondays that are not the 1st?

crontab(5): when both the day-of-month and day-of-week fields are restricted, the job runs when either matches. To run only on a Monday that is the 1st, keep one field as * and test the other in the command, or use a systemd timer — Mon *-*-01 00:00 means both.

Does anything I type get sent to a server?

No. Parsing the expression and counting the run times all happen in your browser. The input is not sent to a server and is not passed to the visitor statistics (Google Analytics) or the ads this site uses. Details are on the privacy page.

Why is my systemd timer a minute late?

systemd groups timer wake-ups. Unless the unit sets AccuracySec=, a timer may start up to one minute after the calculated time (systemd.timer(5)). The times shown here are the calculated ones.