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 numberOfDays
Is 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.