What is Cron Expression

This article is an adoption of Atlassian’s article on how to construct cron expressions for a filter subscription. We borrowed it because this is the best explanation of what CRON is and how to use it. We didn’t provide a link to the original article in our application because some of the contents of the original article differ from what we have in our application.

Construct CRON expressions for a Scheduler

This page describes how to construct a CRON expression. CRON expressions can be used when creating a Scheduler for your Hierarchies. 

A CRON expression gives you more control over the frequency, compared to the default schedules. For example, you could define a CRON expression to notify you at 8:15 am on the second Friday of every month.

Constructing a CRON expression

A CRON expression is a string of fields separated by spaces. The following table displays the fields of a CRON expression in the “Create Scheduler” window, in the order that they must be specified (from left to right):



Minute

Hour

Day (month)

Month

Day (week)

Allowed values

0-59

0-23

1-31

1-12 or JAN-DEC

1-7 or SUN-SAT

Allowed special

characters 

, - * /

, - * /

, - * / ? L W C

, - * /

, - * / ? L C #

Note, cron expressions are not case-sensitive.

Here is an example:

15 8 ? JAN MON

This literally translates to 15 minute, 8 hour, any day of the month, January, Monday.

In plain English, this represents 8:15am on every Monday during January. Note, the ? character means "no particular value". In this example, we've set the Day (month) to no particular value. We don't need to specify it, as we've specified a Day (week) value. Read more about special characters in the next section.

Special characters

Special character

Usage

,

Specifies a list of values. For example, in the Day (week) field, 'MON,WED,FRI' means 'every Monday, Wednesday, and Friday'.

-

Specifies a range of values. For example, in the Day (week) field, 'MON-FRI' means 'every Monday, Tuesday, Wednesday, Thursday and Friday'.

*

Specifies all possible values. For example, in the Hour field, '*' means 'every hour of the day'.

/

Specifies increments to the given value. For example, in the Minute field, '0/15' means 'every 15 minutes during the hour, starting at minute zero'.

?

Specifies no particular value. This is useful when you need to specify a value for one of the two fields Day (month) or Day (week), but not the other.

L

Specifies the last possible value; this has different meanings depending on context. In the Day (week) field, 'L' on its own means 'the last day of every week' (i.e. 'every Saturday'), or if used after another value, means 'the last xxx day of the month' (e.g. 'SATL' and '7L' both mean 'the last Saturday of the month). In the Day (month) field, 'L' on its own means 'the last day of the month', or 'LW' means 'the last weekday of the month'.

W

Specifies the weekday (Monday-Friday) nearest the given day of the month. For example, '1W' means 'the nearest weekday to the 1st of the month' (note that if the 1st is a Saturday, the email will be sent on the nearest weekday within the same month, i.e. on Monday 3rd). 'W' can only be used when the day-of-month is a single day, not a range or list of days.

#

Specifies the nth occurrence of a given day of the week. For example, 'TUES#2' (or '3#2') means 'the second Tuesday of the month'.

Examples

15 20 ? * *

Every day at 8:15 pm.

15 8 * * ?

Every day at 8:15 am.

* 14 * * ?

Every minute starting at 2:00 pm and ending at 2:59 pm, every day.

0/5 14 * * ?

Every 5 minutes starting at 2:00 pm and ending at 2:55 pm, every day.

0/5 14,18 * * ?

Every 5 minutes starting at 2:00 pm and ending at 2:55 pm, AND every 5 minutes starting at 6:00 pm and ending at 6:55 pm, every day.

0-5 14 * * ?

Every minute starting at 2:00 pm and ending at 2:05 pm, every day.

0/10 * * * ?

Every 10 minutes, forever.

10,44 14 ? 3 WED

2:10 pm and 2:44 pm every Wednesday in the month of March.

15 8 ? * MON-FRI

8:15 am every Monday, Tuesday, Wednesday, Thursday, and Friday.

15 8 15 * ?

8:15 am on the 15th day of every month.

15 8 L * ?

8:15 am on the last day of every month.

15 8 LW * ?

8:15 am on the last weekday of every month.

15 8 ? * 6L

8:15 am on the last Friday of every month.

15 8 ? * 6#2

8:15 am on the second Friday of every month.

 

As we have already mentioned before, we didn’t write this article, this is an adoption of Atlassian’s article on how to construct cron expressions for a filter subscription. We just made it a bit more convenient for our users to use it with our application.