How to get 5 working days from today jira scriptrunner

Deleted user March 9, 2017

Hi All, 

 

Im attempting to get 5 working days from issue.getCreated() but im having alot of issues, please see code below: 

 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.issue.UpdateIssueRequest
import com.atlassian.jira.issue.MutableIssue 
MutableIssue issue = ComponentAccessor.getIssueManager().getIssueObject('COM-2479')
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
	Date createdDate = issue.getCreated()
   	Date date = new Date();
    Calendar calendar = Calendar.getInstance();
    date = calendar.getTime(); 
   
	//SimpleDateFormat s;
    //s=new SimpleDateFormat("MM/dd/yy");
    int days = 5;
	int i=0;
    for(date;date<createdDate;)
    {
        calendar.add(Calendar.DAY_OF_MONTH, 0);
        if(calendar.get(Calendar.DAY_OF_WEEK)<=5)
        {
            i++;
        }
    }
    //date=calendar.getTime(); 
    //s=new SimpleDateFormat("MMM dd, yyyy");

return createdDate+i

1 answer

1 vote
Vasiliy Zverev
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
March 9, 2017

Here is code:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue

MutableIssue issue = ComponentAccessor.getIssueManager().getIssueObject('COM-2479')

Calendar calendar = Calendar.getInstance();
calendar.setTime( new Date( issue.getCreated()))
int days = 5;
while (days > 0){
    calendar.add(Calendar.DAY_OF_YEAR, 1);
    if(calendar.get(Calendar.DAY_OF_WEEK) <= 5)
        --days;
}

return calendar.toString();
Deleted user March 9, 2017

Thank you so much Vasiliy, ive been tearing my hair out trying to get this to work, it should be so simple lol

i ran the script and threw me some errors: 

image2017-3-10 16:40:6.png

Im using JIRA 6.3.3

 

Many thanks

Vasiliy Zverev
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
March 9, 2017

This is the reason why I do not like groovy - it does not test on compile time. Here is updated code

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue

MutableIssue issue = ComponentAccessor.getIssueManager().getIssueObject('COM-2479')

Calendar calendar = Calendar.getInstance();
calendar.setTime( new Date( issue.getCreated().getTime()))
int days = 5;
while (days > 0){
    calendar.add(Calendar.DAY_OF_YEAR, 1);
    if(calendar.get(Calendar.DAY_OF_WEEK) <= 5)
        --days;
}

return calendar.toString();
Deleted user March 12, 2017

Ahhh, got it, thank you so much! all is working!! 

 

thank you for all your help. 

 

 

Marek Mikeš October 12, 2018

It's nice solution. Just bear in mind that it's not working in every environment especially be careful with Locales. 

My working sample:

def nextByzDay( Calendar calendar, int days ) { 
while (days > 0) {
calendar.add(Calendar.DAY_OF_YEAR, 1);
if( calendar.get(Calendar.DAY_OF_WEEK) > 1 && calendar.get(Calendar.DAY_OF_WEEK) <= 6)
--days;
}
return calendar
}

You cannot rely on fact Calendar.Sunday is always 7 (Calendar.Sunday==7). For me Calendar.Sunday is 1  (Calendar.Sunday==1). Therefore I suggest to use the constants Calendar.Saturday and Calendar.Sunday.

Like Caigos Atlassian Admin likes this

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events