A cron expression in Java is used to schedule tasks at specific times or intervals, typically in Spring or Quartz Scheduler. It’s a string of five to seven fields representing different time units.
Cron Expression Format (5 or 6 fields):
scss
* * * * * [optional]
– – – – –
| | | | |
| | | | +—– Day of the week (0-7, Sunday=0 or 7)
| | | +——- Month (1-12)
| | +——— Day of the month (1-31)
| +———– Hour (0-23)
+————- Minute (0-59)
- Optional field: (for Quartz) Seconds (0-59) at the start, making it 6 fields.
Common Examples:
- Run every minute:markdown
* * * * *
- Run at 3:00 PM every day:
0 15 * * *
- Run at midnight, first day of the month:
0 0 1 * *
- Run every Sunday at 6:30 AM:
30 6 * * 0
- Every 5 minutes:markdown
*/5 * * * *
- Every hour on the half-hour:
30 * * * *
Spring Cron Expression (6 fields – includes seconds):
0 * * * * *
- Example: Run every day at 12 PM:
0 0 12 * * ?
- “?” – Used for “no specific value” for days or months.
Special Characters:
- * – Every time unit.
- ? – No specific value (used for day/month ambiguity).
- – – Range (e.g., 10-12 means 10 through 12).
- / – Increment (e.g., */5 is every 5 units).
- , – List (e.g., 1,15 means 1st and 15th).
- L – Last day of the month/week.
- W – Closest weekday to a date.
- # – Nth day of the month (e.g., 2#1 = first Monday).
Testing and Validating Cron Expressions:
- Use online tools like Crontab Guru or FreeFormatter Cron Expression Tester to validate expressions.