Azure Functions Timer Trigger Guide
Azure Functions' Timer Trigger uses NCRONTAB expressions — a 6-field format that adds a leading seconds field to standard cron, giving Azure sub-minute scheduling precision that plain 5-field cron can't express, at the cost of needing an extra field on every expression.
Syntax Notes
6 fields: {second} {minute} {hour} {day} {month} {day-of-week} — note the field order starts with seconds, unlike Quartz's similar-looking but differently-ordered 6/7-field format. Runs in UTC by default unless the WEBSITE_TIME_ZONE app setting is configured.
Examples
0 */5 * * * *0 30 2 * * *[Function("NightlyJob")]
public void Run([TimerTrigger("0 0 2 * * *")] TimerInfo timer) { /* ... */ }Gotchas
- NCRONTAB's 6 fields start with seconds, while Quartz's 6-field format (used by AWS EventBridge and others) starts with minutes and ends with an optional year — copying an expression between the two without noticing the different field order produces a schedule that silently means something else.
- Timer triggers run in UTC by default; setting the WEBSITE_TIME_ZONE app setting changes the timezone, but that setting affects the entire Function App, not just one function, which can have unintended side effects on other time-sensitive code.
- On a Consumption plan, a Function App that's scaled to zero can experience a cold start that delays the actual invocation slightly past the scheduled second — for precision-sensitive jobs, an App Service or Premium plan keeps the app warm.
Best Practices
- Double-check field order against NCRONTAB's documentation specifically — its resemblance to both standard cron and Quartz cron makes it easy to misplace a field.
- Use a Premium or App Service plan rather than Consumption if scheduled timing precision matters, to avoid cold-start delay on the triggering invocation.
- Log the actual UTC invocation time inside the function itself during development, to confirm the schedule fires when you expect before relying on it in production.
Frequently Asked Questions
- Does NCRONTAB support timezones?
- Not per-expression — timezone is controlled by the WEBSITE_TIME_ZONE application setting on the whole Function App, not the timer trigger expression itself.
- How is NCRONTAB different from standard cron?
- NCRONTAB adds a leading seconds field (6 fields total: second, minute, hour, day, month, day-of-week), giving sub-minute precision that standard 5-field cron cannot express.
- Can I trigger a timer function manually for testing?
- Yes — in the Azure Portal or via the Azure Functions Core Tools you can manually invoke a timer-triggered function without waiting for its schedule, which is the standard way to test the function logic itself independent of timing.
Related Tools
Platform Guides
Cron syntax for Linux, Kubernetes, AWS, and more
Quartz Scheduler Cron Guide
Quartz Scheduler's 6/7-field cron syntax for Java applications: the L, W, and # special characters, and how it differs from standard cron.
Jenkins Cron Guide
How to schedule Jenkins builds with cron syntax: the Build periodically trigger, the H (hash) character for load distribution, and common patterns.