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. By default, when you add a certain number of days to a date the weekends are included. To exclude them, you can use this snippet.

...

Placeholder

Description

Example

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


Examples

The output of this code snippet is a Timestamp which you could use in a Groovy script, for example, to:

  • Calculate and display the Due date plus 5 days, excluding weekends, in a Calculated Date/Time field

    Code Block
    languagegroovy
    linenumberstrue
    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);
     
        //Run a loop and check each day to skip a weekend
      	for(int i=1;i<=remDays;i++){
          c1.add(Calendar.DAY_OF_MONTH, 1);
        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);
            }
     
        //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();
    }
    date(issue.get("duedate"),5)


  • Calculate the time to resolution excluding weekends and display a message to the customer in a Calculated Text field

    Code Block
    languagegroovy
    linenumberstrue
    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);
     
        //Run a loop and check each day to skip a weekend
      	for(int i=1;i<=remDays;i++){
          c1.add(Calendar.DAY_OF_MONTH, 1);
        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);
            }
     
        //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

...