🚀 JWT 3.0 is out 🚀 

The app was completely overhauled, and so was the documentation: Jira Workflow Toolbox (Server/Data Center) Home

The page you are viewing is still valid for all app versions prior to 3.0.

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Examples of Math and Time Expressions

This page presents a collection of expressions valid for the Expression Parser.

Math Calculus

ExpressionReturned ValueNotes
max(count(subtasks(%{00041})) - 1, 0)

or since version 2.2.1:

count(siblingSubtasks())
For a sub-task, the number of sibling sub-tasks.Function max(x, y) is used to avoid returning -1 when used with non-sub-task issues.
%{00041} = Parent's issue key
{10000} = null ? 1 : {10000} + 1

or since version 2.2.16:

sum([{10000}]) + 1
Formula to increment a numeric custom field, setting it to 1 if it's initially unset.{10000} is the field code for a supposed numeric custom field.
{10000} + {10001} + {10003}Formula for summing 3 numeric custom fields when we are certain that all 3 the fields are initialized. In case any of these fields is not initialized, an error is raised and any of the following 2 expression examples should be used.{10000}, {10001} and {10003} are three numeric custom field.
({10000} = null ? 0 : {10000}) + ({10001} = null ? 0 : {10001}) + ({10003} = null ? 0 : {10003})Formula for summing 3 numeric custom fields when some of them may be uninitialized. When any of this fields is not initialized a zero value is assumed.

{10000}, {10001} and {10003} are three numeric custom field.
sum([{10000}, {10001}, {10003}])A more compact syntax for summing 3 numeric custom fields when some of them may be uninitialized.
Version 2.2.16 or higher is required.
{10000}, {10001} and {10003} are three numeric custom field.
This syntax is available since version 2.2.16.


Date-Time Calculus

ExpressionReturned ValueNotes
{00012} - 6 * {DAY}Calculates a date 6 natural days earlier than Due Date{00012} = Due Date
addTimeSkippingWeekends({00009}, 36*{HOUR} + 45*{MINUTE}, LOCAL)Returns a date-time value equivalent to adding 36 hour and 45 minutes to date and time of issue creation, skipping the periods of time which correspond to weekend.{00009} = Date and time of creation
addTimeSkippingWeekends({00009}, 36*{HOUR} + 45*{MINUTE}, LOCAL, {FRIDAY}, {SATURDAY})Same as previous expression, but using Israeli weekend.Israeli weekend is on Friday and Saturday.
addDaysSkippingWeekends({00012}, -6, LOCAL)Calculates a date 6 work days earlier than Due Date for Jira Server's local timezone.{00012} = Due Date
Work days depend on timezone, since certain time moment maybe Sunday in certain timezones, and Monday in another ones.
subtractDatesSkippingWeekends({00012}, {00057}, LOCAL)/{DAY}Returns the number of working days from Current Date and Time to Due Date, i.e., skipping weekends in Jira server's timezone.{00012} = Due Date
{00057} = Current day and time
round(({00057} - {00009}) / {HOUR})Number of hours since issue creationFunction round() approximates the number of hours to the nearer integer.
{00057} = Current day and time
{00009} = Date and time of creation
floor(({00012} - {00057}) / {DAY})Number of days to Due DateFunction floor() approximates the number of days by removing the fractional part.
{00012} = Due Date
{00057} = Current day and time
datePart({00057}, LOCAL) + (dayOfTheWeek({00057}, LOCAL) = 7 ? 6 : 6 - dayOfTheWeek({00057}, LOCAL)) * {DAY}Returns a date value for next Friday, or for today if it's Friday{00057} = Current day and time
Example: Set "Due date" to a specific day of next week no matter of date of creation this week
datePart({00057}, LOCAL) + (dayOfTheWeek({00057}, LOCAL) = 6 ? 7 : (dayOfTheWeek({00057}, LOCAL) = 7 ? 6 : 6 - dayOfTheWeek({00057}, LOCAL))) * {DAY}Returns a date value for next Friday, even if today is Friday.{00057} = Current day and time
Example: Set "Due date" to a specific day of next week no matter of date of creation this week


Date-Time Calculus on Custom Schedules

Custom Schedules are supported since version 2.2.39.

We use Custom Schedules when we need to do time calculations within the work-schedule of our company or organization, e.g., we want to count only the time from 8:00 to 15:00, and from 16:00 to 19:30.

Functionality provided by functions addTimeSkippingWeekends() and subtractDatesSkippingWeekends() can also be implemented using Custom Schedules, and much much more.

Your Custom Schedules are defined in Jira at Administration > Add-ons > JIRA WORKFLOW TOOLBOX > Schedules.

ExpressionReturned ValueNotes
timeDifference({00012}, {00057}, "my_schedule", LOCAL)Returns the resting time to Due date within my_schedule custom schedule.{00057} = Current day and time
{00012} = Due date
addTime({00057}, 24 * {HOUR}, "my_schedule", LOCAL)Returns a date-time value (i.e., an instant in time) obtained by summing 24 hours to current date-time within my_schedule custom schedule.{00057} = Current day and time


Showing Time Durations in Pretty Format

The following examples are string expressions in advanced parsing mode.

ExpressionReturned ValueNotes

formatDuration({00057} - {00009})

Calculates the time since issue creation, and shows it as a text using whole words like: 12 days 6 hours 34 minutes.{00057} = Current day and time
{00009} = Date and time of creation

shortFormatDuration({00057} - {00009})

Calculates the time since issue creation, and shows it as a text using abbreviations like: 12 d 6 h 34 m.{00057} = Current day and time
{00009} = Date and time of creation

formatDuration(subtractDatesSkippingWeekends({00057}, {00009}, LOCAL))

Calculates the time since issue creation skipping weekends, and shows it as a text like: 12 days 6 hours 34 minutes.{00057} = Current day and time
{00009} = Date and time of creation

formatWorkDuration({00057} - {00009})

Calculates the time since issue creation, and shows it as text, but using the workday and workweek defined at time tracking configuration instead of 24 hours per day and 7 days per week.Example: formatWorkDuration(24 * {HOUR} + 5 * {MINUTE}) returns "3 days 5 minutes" when we use 8 hours per workday.

shortFormatWorkDuration({00057} - {00009})

Similar to the previous expression but shows the result using abbreviations instead of whole words.Example: shortFormatWorkDuration(24 * {HOUR} + 5 * {MINUTE}) returns "3d 5m" when we use 8 hours per workday.