Curated cron expression

Twice Monthly on 1st and 15th: 0 9 1,15 * *

0 9 1,15 * * — semi-monthly schedule at nine AM on two days.

Meaning at a glance

0 9 1,15 * *

Run on the 1st and 15th at 09:00

Twice monthly at 09:00 on days 1 and 15.

Next-run example: On Jan 16, next run is Feb 1 09:00.

How 0 9 1,15 * * works

Day list 1,15 creates two runs per month.

Semi-monthly billing and payroll patterns.

Preview next runs and platform conversions in CronWizard before deploying to production.

Field breakdown for 0 9 1,15 * *
FieldValueMeaning
Minute0Configured as 0
Hour9Configured as 9
Day of month1,15Configured as 1,15
Month*Every value
Day of week*Every value

Good use cases

  • Semi-monthly payroll
  • Split billing cycles
  • Bi-monthly reports

Timezone and daylight-saving behavior

Anchor timezone for '9 AM'.

Preview both anchors around DST.

The expression does not contain a timezone. The scheduler supplies that context. Use the next-run preview above in the same IANA timezone as production, then confirm the target platform's own timezone rules.

Platform compatibility and converted expressions

The source expression is five-field Unix cron. Use the exact equivalent below rather than adding or removing fields by sight.

Platform compatibility for 0 9 1,15 * *
PlatformStatusExpressionWhat to know
Unix crontabReady0 9 1,15 * *Use directly in a normal five-field user crontab.
Kubernetes CronJobReady0 9 1,15 * *Use as spec.schedule; set spec.timeZone when local wall-clock behavior matters.
GitHub ActionsReady0 9 1,15 * *Use under on.schedule; UTC is the default and an IANA timezone may be specified.
Vercel Cron JobsPlan / behavior limit0 9 1,15 * *The expression is valid, but Vercel always uses UTC and Hobby schedules run at most once per day.
AWS EventBridge SchedulerConvertcron(0 9 1,15 * ? *)Convert to AWS minute-first cron(...), add the required year, and use ? in one day field.
Spring @ScheduledConvert0 0 9 1,15 * *Use Spring’s six fields by prepending seconds and set zone explicitly when needed.
systemd timerConvert0 9 1,15 * *Use OnCalendar syntax and validate it with systemd-analyze calendar on the target host.

Edge cases to check before deployment

  • Short months still have day 15.

Frequently asked questions

What does the cron expression 0 9 1,15 * * mean?

0 9 1,15 * * means “run on the 1st and 15th at 09:00.” Twice monthly at 09:00 on days 1 and 15.

What are the next run times for 0 9 1,15 * *?

On Jan 16, next run is Feb 1 09:00. Exact timestamps depend on the scheduler timezone and the current time.

What timezone does 0 9 1,15 * * use?

Anchor timezone for '9 AM'.

Can I use 0 9 1,15 * * on every scheduling platform?

No. It is a five-field Unix expression. Some platforms accept it directly, while AWS EventBridge Scheduler, Spring, and systemd require the converted form shown in the compatibility table.