Cron Day of Month Field

The day-of-month field (third in standard 5-field cron) specifies which day(s) of the month the job runs. Valid values are 1–31. Quartz adds L (last day) and W (nearest weekday) extensions.

Quick Reference
ValueMeaningExample
*Every day of the month0 0 * * *
1The 1st of every month0 0 1 * *
15The 15th of every month0 0 15 * *
1,15The 1st and 15th0 0 1,15 * *
LLast day of the month (Quartz only)0 0 0 L * ?
15WNearest weekday to the 15th (Quartz only)0 0 0 15W * ?
?No specific value (Quartz/AWS — used with day-of-week)0 0 0 ? * MON

Valid Values

1

Minimum

31

Maximum

* , - / ? L W

Allowed special characters

Examples

1First day of every month
1515th of every month
LLast day of every month (Quartz/Spring only)
1,15Twice monthly — 1st and 15th
?No specific value — required by Quartz/AWS when day-of-week is set

Platform Support

Platforms that include the Day of Month field:

Standard Linux/UnixGitHub ActionsGoogle Cloud SchedulerKubernetes CronJobAzure Functions (NCRONTAB)AWS EventBridgeQuartz SchedulerSpring @ScheduledJenkinsApache Airflow

Frequently Asked Questions

What happens in months with fewer than 31 days?
If you specify day 31 and the month has only 30 days, the job does not run that month. Use the Quartz "L" character for the last day of whatever month it is.
Can I specify "first Monday of the month" in standard cron?
Not directly. Quartz supports this with the # character (e.g., "MON#1"). In standard 5-field cron, you'd use a script that checks whether it's the first Monday at runtime.
Built & maintained by Danny Vargas
Last updated January 2026·Parsing runs in your browser — no expression leaves your device