Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...

...

...

...

...

...

...

...

...

...

...

Abstract

This code snippet adds a certain number of days to a date excluding the weekends. Currently, when you add a certain number of days to a date the weekends are included. To exclude them, you can use this snippet.

Logic

...

Snippet

Code Block
languagejs
linenumberstrue
{% macro add(from, nod) %}
	{% set weeks = nod/5 %}
	{% set weeks = weeks | int %}
	{% set remDays = nod%5 %}

	{# Adding the whole weeks #}
	{% set from = from <fromDate> | date('add', weeks,'weeks') %}

	{# Skipping the weekend if starting with Friday #}
    {% if from | date('day') == "5" and remDays > 0 %}
		{% set from = from | date('add',1,'d') | date %}
	{% endif %}
    
    {# Skipping the starting weekend #}
	{% if from | date('day') == "6" %}
		{% set from = from | date('add',1,'d') %}
	{% endif %}

	{% if from | date('day') == "0"  and remDays == 0 %}
		{% set from = from | date('add',1,'d') %}
	{% endif %}	

	{# Add remaining days #}
	{% set from = from | date('add',remDays,'d') %}

	{# Skipping the ending weekend #}
	{% if from | date('day') == "6" %}
		{% set from = from | date('add',1,'d') %}
	{% endif %}
	{% if from | date('day') == "0" %}
		{% set from = from | date('add',1,'d') %}
	{% endif %}

	{{from | date}}
{% endmacro%}

{% call add(issue.fields.duedate, 22) -%}
{%- endcall %businessAdd', <nod> ) | date }}

Placeholders

Placeholder

Description

Example

<from<fromDate>Date to which the number of days should be addednew Date()now
<nod>Number of days to add22


Examples

The output of this the code snippet is a TimestampMoment.js date object which you could use in:A Groovy expression, for example to:

  • Set a Date/Date-time picker field - Eg: Set
a Date-time picker field to 5 days plus the Due date
  • the Due date to issue created plus 5 days excluding weekends in
    • one of the Set Field Value post-functions
    • in the Create issue post-function under Set fields of new issue section

      Code Block
date(issue.get("duedate"),5)
A Groovy template, for example to:
    • languagejs
      linenumberstrue
      {{ issue.fields.duedate | date('businessAdd', 5 ) | date }}
      


  • Notify the customer that the issue will be resolved in
ten days excluding weekends,
  • 6 days from today through the
    • Comment in one of the Comment issue post-functions
    • Subject/HTML body/Text body of Email issue post-function

      Code Block
<% Date date(Date from, int nod){
    Calendar c1 = GregorianCalendar.getInstance();
    c1.setTime(from);

    int weeks = nod/5;
    int remDays = nod%5;

    //Adding whole weeks
    c1.add(Calendar.WEEK_OF_YEAR, weeks);

    //Skipping starting weekend
    if (c1.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY)
        c1.add(Calendar.DAY_OF_MONTH, 1);
    if (c1.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
        c1.add(Calendar.DAY_OF_MONTH, 1);

    //Add days
    c1.add(Calendar.DAY_OF_MONTH, remDays);

    //Skip ending weekend
    if (c1.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY)
        c1.add(Calendar.DAY_OF_MONTH, 1);
    if (c1.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
        c1.add(Calendar.DAY_OF_MONTH, 1);

    //move to 0:00
    c1.clearTime();
    
    return c1.getTime();
}
%>
Your issue will be resolved on or before <%=date(new Date(),10)%>

References

...

    • languagejs
      linenumberstrue
      Your issue will be resolved on or before: {{ issue.fields.created | date('businessAdd', 6 ) | date }}


References

Filter by label (Content by label)
showLabelsfalse
max5
spacesKB
showSpacefalse
sortmodified
reversetrue
typepage
cqllabel = "jmwe-nunjucks" and type = "page" and space = "JMWEC"
labelsjmwe-nunjucks jmwe-cloud

Page Properties
hiddentrue


Related issues