Cron Schedules for Business Hours

Not all scheduled jobs should run 24/7. Report generation, Slack digest notifications, customer-facing imports, batch email sends, and business intelligence refreshes are examples of jobs that should only fire during business hours when teams are available to act on results or respond to failures. Running a weekly sales report at 3 AM on Sunday is pointless — the recipients won't see it until Monday morning anyway, and any failures will go unnoticed until then. The key to business hours cron expressions is the day-of-week field (1-5 for Monday-Friday) combined with an hour range (9-17 for 9 AM to 5 PM). The combination */30 9-17 * * 1-5 fires every 30 minutes between 9 AM and 5 PM on weekdays — a common schedule for data synchronization jobs that need to stay relatively fresh during business hours without running unnecessarily overnight. This collection shows eight business-hours patterns: 9 AM daily on weekdays (morning kickoff jobs), 5 PM daily on weekdays (end-of-day summaries), every hour during business hours, every 30 minutes during business hours, Monday morning specifically (weekly digests), Friday end-of-day (weekly summaries), 8 AM daily on weekdays (early-bird jobs before main business hours begin), and noon daily on weekdays (midday status updates). Monday morning scheduling is particularly valuable: 0 9 * * 1 fires at 9 AM every Monday, ideal for weekly digest emails, sprint kickoff notifications, weekly analytics reports, and Monday morning data refreshes. Recipients get the information at the start of their work week when they're planning their priorities. Friday-specific scheduling: 0 16 * * 5 fires at 4 PM every Friday, one hour before a typical 5 PM end of business. This is useful for weekly summary emails, time-to-archive jobs that move completed records to archive storage, and cleanup jobs that prepare for a clean start next week. Timezone considerations for business hours: if your team is distributed across multiple time zones, "business hours" becomes ambiguous. Consider scheduling based on the timezone where the largest number of affected users or stakeholders are located, and document this clearly in comments above the cron entry. Kubernetes CronJobs and cloud schedulers let you specify a timezone explicitly. Tips: for the Monday morning digest pattern, combine the weekday filter with the hour to avoid the job accidentally firing on a Monday public holiday — consider adding logic in the job script itself to skip execution on detected holidays if this matters for your use case.

Example
0 9 * * 1-5
0 17 * * 1-5
0 8-18 * * 1-5
*/30 9-17 * * 1-5
0 9 * * 1
0 16 * * 5
0 8 * * 1-5
0 12 * * 1-5
[ open in Cron Parser → ]

FAQ

How do I restrict a cron job to weekdays only?
Set the day-of-week field to 1-5 (Monday through Friday). Combined with an hour range, this limits execution to working hours on weekdays.
Can cron run a job every 30 minutes but only during business hours?
Yes. Use */30 in the minute field and 9-17 in the hour field: */30 9-17 * * 1-5 fires at :00 and :30 past every hour between 9 AM and 5 PM on weekdays.
How do I schedule a Monday morning digest email?
Use 0 9 * * 1 to fire once at 9 AM every Monday. Adjust the hour to match your recipients' timezone.

Related Examples