Hi Guys,
Im trying to calculate 2 working days in postfunction but im having a abit of trouble, here is the code i currently have:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.CustomFieldManager
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
MutableIssue issue = ComponentAccessor.getIssueManager().getIssueObject('OE-2250')
Date test = issue.getCustomFieldValue(customFieldManager.getCustomFieldObject(10804)); //09-Jan-17
Date test2 = issue.getCustomFieldValue(customFieldManager.getCustomFieldObject(11504)); //16-Jan-17
startCal = Calendar.getInstance();
endCal = Calendar.getInstance();
startCal.setTime(test);
endCal.setTime(test2);
int numberOfDays = 0;
while (startCal.before(endCal)) {
if ((Calendar.SATURDAY != startCal.get(Calendar.DAY_OF_WEEK))&&(Calendar.SUNDAY != startCal.get(Calendar.DAY_OF_WEEK))) {
numberOfDays++;
startCal.add(Calendar.DATE,1);
}else {
startCal.add(Calendar.DATE,1);
}
}
return numberOfDays
Thank you so much
Try this refactored code:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.CustomFieldManager
MutableIssue issue = ComponentAccessor.getIssueManager().getIssueObject('OE-2250')
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
Calendar startCal = Calendar.getInstance();
Calendar endCal = Calendar.getInstance();
startCal.setTime(issue.getCustomFieldValue(customFieldManager.getCustomFieldObject(10804))); //09-Jan-17
endCal.setTime(issue.getCustomFieldValue(customFieldManager.getCustomFieldObject(11504))); //16-Jan-17
int numberOfDays = 0;
while (startCal.before(teendCalst2)) {
startCal.add(Calendar.DAY_OF_YEAR, 1);
if ( (Calendar.SATURDAY != startCal.get(Calendar.DAY_OF_WEEK))
&&(Calendar.SUNDAY != startCal.get(Calendar.DAY_OF_WEEK))) {
numberOfDays++;
}
}
return numberOfDays;
Thank you so much again Vasiliy, definielty does work, but its looks like its calculating Sunday into the logic:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.CustomFieldManager
MutableIssue issue = ComponentAccessor.getIssueManager().getIssueObject('OE-2264')
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
Calendar startCal = Calendar.getInstance();
Calendar endCal = Calendar.getInstance();
startCal.setTime(issue.getCustomFieldValue(customFieldManager.getCustomFieldObject(10804))); //14-Jan-17
endCal.setTime(issue.getCustomFieldValue(customFieldManager.getCustomFieldObject(11504))); //18-Jan-17
int numberOfDays = 0;
while (startCal.before(endCal)) {
startCal.add(Calendar.DAY_OF_YEAR, 1);
if ((startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) && (startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY)) {
numberOfDays++;
}
}
return numberOfDaysIs returning 4
Any idea why this is happening?
Cheers,
Pon
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Try this one:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.CustomFieldManager
MutableIssue issue = ComponentAccessor.getIssueManager().getIssueObject('OE-2264')
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
Calendar startCal = Calendar.getInstance();
Calendar endCal = Calendar.getInstance();
startCal.setTime(issue.getCustomFieldValue(customFieldManager.getCustomFieldObject(10804))); //14-Jan-17
endCal.setTime(issue.getCustomFieldValue(customFieldManager.getCustomFieldObject(11504))); //18-Jan-17
int numberOfDays = 0;
while (startCal.before(endCal)) {
startCal.add(Calendar.DAY_OF_YEAR, 1);
if ( (startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY)
|| (startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY)) {
continue;
}
numberOfDays++;
}
return numberOfDays
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.